现在的位置: 首页 > 综合 > 正文

FileTool类

2017年12月24日 ⁄ 综合 ⁄ 共 6626字 ⁄ 字号 评论关闭
package com.mobimtech.natives.ivp.util;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

import com.mobimtech.natives.ivp.chatroom.RoomCommonData;

import android.content.Context;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.util.Log;

public class FileTool {
	 private static final String xmlPath="gift.xml";
	 private static final String zipPath="gift.zip";
	 /** 
	     * DeCompress the ZIP to the path 
	     * @param zipFileString  name of ZIP 
	     * @param outPathString   path to be unZIP
	     * @throws Exception 
	     */  
	 public static void UnZipFromAssetToPackage(Context context) {  
	       // ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));  
		    String outPath=RoomCommonData.outPath;
		   ZipInputStream inZip;
			try {
				inZip = new ZipInputStream(context.getAssets().open(zipPath));
				 ZipEntry zipEntry;  
			        String szName = "";  
			        while ((zipEntry = inZip.getNextEntry()) != null) {  
			            szName = zipEntry.getName();  
			            if (zipEntry.isDirectory()) {  
			                // get the folder name of the widget  
			                szName = szName.substring(0, szName.length() - 1);  
			                File folder = new File(outPath + File.separator + szName);  
			                folder.mkdirs();  
			            } else { 
			            	String test=outPath + File.separator + szName;
			                File file = new File(outPath + File.separator + szName);  
			                file.createNewFile();  
			                // get the output stream of the file  
			                FileOutputStream out = new FileOutputStream(file);  
			                int len;  
			                byte[] buffer = new byte[1024];  
			                // read (len) bytes into buffer  
			                while ((len = inZip.read(buffer)) != -1) {  
			                    // write (len) byte from buffer at the position 0  
			                    out.write(buffer, 0, len);  
			                    out.flush();  
			                }  
			                out.close();  
			            }  
			        } 
			        inZip.close();  
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
	       
	    }
	 //read InputStream from gift.xml file in path /data/data/packagename
	 public static  InputStream readXmlFromPackage()
	 {
		 String outPath=RoomCommonData.outPath;
	 	//get gift data from assets folder.
		InputStream inStream=null;
		try{
			File file=new File(outPath+File.separator+"gift.xml");//从/data/data/cache中读
			inStream=new FileInputStream(file);
			

		}catch(IOException e){
			e.printStackTrace();
		}
		return inStream;
	 }
	 
	 public static InputStream readXmlFromAsset(Context context){
		 InputStream inStream=null;
		 try{
			 inStream=context.getAssets().open(xmlPath);
		 }catch(Exception e){
			 e.printStackTrace();
		 }
		 return inStream;
	 }
	 
	 //read bitmap from path /data/data/packagename/
	 public static Bitmap readBitmapFromLocal(String fileName){
		    Bitmap bitmap = null;
			bitmap=BitmapFactory.decodeFile(fileName);
		    return bitmap;
	 }
	 
	 
	 
	 
	 
	 
	/**
	 * file exist or not
	 * @param path: full path,ie:/data/data/com.mobimtech.natives.ivp.chatroom/files/json.txt
	 * @return boolean
	 */
	public static boolean isFileExist(String path){
		if(path==null)
			return false;
		try{
			File f=new File(path);
			boolean isexist=f.exists();
			if(!f.exists())
				return false;
		}catch(Exception e){
			e.printStackTrace();
		}
		return true;
	}
	
	//save data to file
	public  static void saveFile(Context context,String srcData,String desFileName){  
        //context.getFilesDir(); get system file path /data/data/<package name>/files  
        //context.getCacheDir(); //get cache file path  /data/data/<package name>/cache  
		try{
			FileOutputStream outputStream=context.openFileOutput(desFileName, Context.MODE_PRIVATE);  
	        outputStream.write(srcData.getBytes());  
	        outputStream.flush();
	        outputStream.close();
		}catch(Exception e){
			e.printStackTrace();
		}
          
    }  
	
	//read data from file
	public static String readFile(Context context,String fileName){
		String result="";
		try{
			FileInputStream inputStream=context.openFileInput(fileName);
			ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
			byte[] buffer=new byte[1024];
			int len=0;
			while((len=inputStream.read(buffer))!=-1){
				outputStream.write(buffer,0,len);
			}
			outputStream.close();
			byte[] data=outputStream.toByteArray();
		    result=new String(data);
			
		}catch(Exception e){
			e.printStackTrace();
		}
		return result;
	}
	
	//save data to SDCard
	public static void saveFileToSDCard(Context context,String fileName){
		try{
			Environment.getExternalStorageDirectory(); //得到sdcard目录  
	        File file=new File("/sdcard",fileName);  
	        FileOutputStream outputStream=new FileOutputStream(file);  
	        outputStream.write(fileName.getBytes());  
	        outputStream.close();  
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	
	
      
    /** 
     * Compress file and folder
     * @param srcFileString   file or folder to be Compress
     * @param zipFileString   the path name of result ZIP
     * @throws Exception 
     */  
    public static void ZipFolder(String srcFileString, String zipFileString)throws Exception {  
        //create ZIP 
        ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));  
        //create the file 
        File file = new File(srcFileString);  
        //compress
        ZipFiles(file.getParent()+File.separator, file.getName(), outZip);  
        //finish and close
        outZip.finish();  
        outZip.close();  
    }
    
    /** 
     * compress files
     * @param folderString 
     * @param fileString 
     * @param zipOutputSteam 
     * @throws Exception 
     */  
    private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam)throws Exception{  
        if(zipOutputSteam == null)  
        return;  
        File file = new File(folderString+fileString);  
        if (file.isFile()) {  
            ZipEntry zipEntry =  new ZipEntry(fileString);  
            FileInputStream inputStream = new FileInputStream(file);  
            zipOutputSteam.putNextEntry(zipEntry);  
            int len;  
            byte[] buffer = new byte[4096];   
            while((len=inputStream.read(buffer)) != -1)  
            {  
                zipOutputSteam.write(buffer, 0, len);  
            }  
            zipOutputSteam.closeEntry();  
        }  
        else {  
            //folder
            String fileList[] = file.list();  
            //no child file and compress  
            if (fileList.length <= 0) {  
                ZipEntry zipEntry =  new ZipEntry(fileString+File.separator);  
                zipOutputSteam.putNextEntry(zipEntry);  
                zipOutputSteam.closeEntry();                  
            }  
            //child files and recursion  
            for (int i = 0; i < fileList.length; i++) {  
                ZipFiles(folderString, fileString+java.io.File.separator+fileList[i], zipOutputSteam);  
            }//end of for  
        }    
    }
	
    /** 
     * return the InputStream of file in the ZIP
     * @param zipFileString  name of ZIP 
     * @param fileString     name of file in the ZIP 
     * @return InputStream 
     * @throws Exception 
     */  
    public static InputStream UpZip(String zipFileString, String fileString)throws Exception {  
        ZipFile zipFile = new ZipFile(zipFileString);  
        ZipEntry zipEntry = zipFile.getEntry(fileString);  
        return zipFile.getInputStream(zipEntry);  
    }  
    
	/** 
     * return files list(file and folder) in the ZIP
     * @param zipFileString     ZIP name
     * @param bContainFolder    contain folder or not
     * @param bContainFile      contain file or not
     * @return 
     * @throws Exception 
     */  
    public static List<File> GetFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)throws Exception {  
        List<File> fileList = new ArrayList<File>();  
        ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));  
        ZipEntry zipEntry;  
        String szName = "";  
        while ((zipEntry = inZip.getNextEntry()) != null) {  
            szName = zipEntry.getName();  
            if (zipEntry.isDirectory()) {  
                // get the folder name of the widget  
                szName = szName.substring(0, szName.length() - 1);  
                File folder = new File(szName);  
                if (bContainFolder) {  
                    fileList.add(folder);  
                }  
          
            } else {  
                File file = new File(szName);  
                if (bContainFile) {  
                    fileList.add(file);  
                }  
            }  
        }
        inZip.close();  
        return fileList;  
    }  
}

抱歉!评论已关闭.