import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;
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()); } } 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(); } } } 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 环境下运行该程序即可。
请注意,上面的代码块中的 PackageName
是您自己所定义的包名。如果没有将此类文件放在任何包名下,则可以将其忽略。
来源地址:https://blog.csdn.net/m0_59680416/article/details/131108395
--结束END--
本文标题: 如何用java给一个文件夹打成压缩包?
本文链接: https://lsjlt.com/news/395577.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-04-01
2024-04-03
2024-04-03
2024-01-21
2024-01-21
2024-01-21
2024-01-21
2023-12-23
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0