Java 壓縮ZIP文件

1.需要導入的兩個架包

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

用apache的相關類代替Java的相關類,可以解決壓縮文件中中文文件名亂碼的問題。

2.代碼如下

/**
	 * 壓縮文件
	 * @param zipFile 壓縮後的壓縮包文件
	 * @param files 要壓縮的文件數組
	 */
	public static void zip(File zipFile,File[] files){
		if(files==null || files.length==0){
			return;
		}
		byte[] buffer=new byte[2048];
		FileInputStream fis=null;
		ZipOutputStream zos=null;
		try{
			zos=new ZipOutputStream(new FileOutputStream(zipFile));
			for(File file : files){
				fis=new FileInputStream(file);
				zos.putNextEntry(new ZipEntry(file.getName()));
				zos.setEncoding("GBK");
				int len;
				while((len=fis.read(buffer))>0){
					zos.write(buffer,0,len);
				}
				zos.closeEntry();
				fis.close();
			}
			zos.close();
		}
		catch(Exception e){
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
	}

3.測試代碼如下

File f=new File("D:\\tmp\\212033");
		File zipFile=new File("D:\\tmp\\212033.zip");
		Test11.zip(zipFile,f.listFiles());

該壓縮方法不支持通過f.listFiles()傳入文件數組時,文件夾中包含文件夾的情況。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章