import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Zip {
public static void main(String[] args) {
// 将要被压缩的文件夹路径
String folderPath = "D:\Logback\yiteng\ctnNO";
// 压缩后生成的压缩文件路径及文件名
String zipFilePath = "D:\Logback\yiteng\ctnNO.zip";
try {
zipFolder(folderPath, zipFilePath);
System.out.println("Zip file created successfully.");
} catch (IOException e) {
System.out.println("Error creating zip file: " + e.getMessage());
}
}
/**
* 打包压缩文件夹
*
* @param folderPath 文件夹路径
* @param zipFilePath 压缩后的文件路径
* @throws IOException IO异常
*/
public static void zipFolder(String folderPath, String zipFilePath) throws IOException {
FileOutputStream fos = null;
ZipOutputStream zos = null;
try {
fos = new FileOutputStream(zipFilePath);
zos = new ZipOutputStream(fos);
// 递归遍历整个文件夹并添加到压缩包
addFolderToZip("", new File(folderPath), zos);
} finally {
if (zos != null) {
zos.close();
}
if (fos != null) {
fos.close();
}
}
}
/**
* 将文件夹及其中的文件递归添加到压缩流中
*
* @param parentPath 父级路径
* @param folder 文件夹
* @param zos Zip输出流
* @throws FileNotFoundException 文件未找到异常
* @throws IOException IO异常
*/
private static void addFolderToZip(String parentPath, File folder, ZipOutputStream zos) throws FileNotFoundException, IOException {
for (File file : folder.listFiles()) {
if (file.isDirectory()) {
// 递归添加子文件夹中的文件
addFolderToZip(parentPath + folder.getName() + "/", file, zos);
} else {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
// 新建Zip条目并将输入流加入到Zip包中
ZipEntry zipEntry = new ZipEntry(parentPath + folder.getName() + "/" + file.getName());
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}
} finally {
if (fis != null) {
fis.close();
}
}
}
}
}
}
上面的程序可以将 folderPath
指向的文件夹中所有文件和子文件夹打包成 zipFilePath
所指向的压缩文件。您只需要将文件夹路径和压缩文件路径替换为实际的值,然后在 Java 环境下运行该程序即可。文章来源:https://www.toymoban.com/news/detail-692847.html
请注意,上面的代码块中的 PackageName
是您自己所定义的包名。如果没有将此类文件放在任何包名下,则可以将其忽略。文章来源地址https://www.toymoban.com/news/detail-692847.html
到了这里,关于如何用java给一个文件夹打成压缩包?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!