Java - 将文件压缩为 ZIP

java.util.zip 提供了两步 Zip 压缩方式:
使用 FileInputStream.
将文件名添加到 ZipEntry 并将其保存为 ZipOutputStream.

以下程序读取文件c:\\FIchier0410.log”并将其压缩在c:\\monFichier.zip”.

package com.codeurjava.File;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
导入 java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class zipFile {

public static void main(String[] args) {

final int BUFFER = 2048;

try{
byte buffer[] = 新字节[BUFFER];

FileOutputStream fileos = new FileOutputStream(C:\\monFichier.zip”);
ZipOutputStream zipos = new ZipOutputStream(fileos);
ZipEntry zipentry= new ZipEntry(c:\\Fichier0410.log”);
zipos.putNextEntry(zipentry);
FileInputStream in = new FileInputStream(c:\\Fichier0410.log”);

int lec;
while ((lec = in.read(buffer)) > 0) {
zipos.write(buffer, 0, lec);
}

in.close();
zipos.closeEntry();
zipos.close();

System.out.println(已创建压缩文件!”);

}catch(IOException ex){
ex.printStackTrace();
}

}

}
Runtime:

Compressed file created!

以递归方式从文件夹中压缩多个文件

读取c:\\test并将它们压缩在”c:\\monFichier.zip中。该程序递归压缩目录 .

package com.codeurjava.File;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
导入 java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class zipFile {

final static String dossier_src = c:\\test”;
最终静态字符串 fichier_zip_desc = monFichier.zip”;
静态列表<字符串>列表;

public static void main(String[] args) {

final int BUFFER = 2048;

文件节点 = new File(dossier_src);
list = new ArrayList();
Files(节点) 列表;

try{
byte buffer[] = new byte[BUFFER];

FileOutputStream fileos = new FileOutputStream(fichier_zip_desc);
ZipOutputStream zipos = new ZipOutputStream(fileos);

for(String file: list){
ZipEntry zipentry= new ZipEntry(file);
zipos.putNextEntry(zipentry);
FileInputStream in =
new FileInputStream(dossier_src + File.separator + file);

int lec;
while ((lec = in.read(buffer)) > 0) {
zipos.write(buffer, 0, lec);
}

in.close();
System.out.println(添加了+file+”文件);
}

zipos.closeEntry();
zipos.close();

System.out.println(已创建压缩文件!”);

}catch(IOException ex){
ex.printStackTrace();
}

}

public static List filenode{

//add files
if(node.isFile()){
String file = node.getAbsoluteFile().toString();
字符串路径 = file.substring(dossier_src.length()+1, file.length());
list.add(路径);
}

if(node.isDirectory()){
String[] subFile = node.list();
for(String filename: subFile){
filelist(new File(node, filename));
}
}
返回列表;
}
}
运行时:

添加了img_01.jpg文件
pdf file\java.pdf added
table.sql 文件已添加
Word文件\课程java.docx已添加
已创建压缩文件!

资源: