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()傳入文件數組時,文件夾中包含文件夾的情況。