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);
// 遞歸遍歷整個(gè)文件夾并添加到壓縮包
addFolderToZip("", new File(folderPath), zos);
} finally {
if (zos != null) {
zos.close();
}
if (fos != null) {
fos.close();
}
}
}
/**
* 將文件夾及其中的文件遞歸添加到壓縮流中
*
* @param parentPath 父級(jí)路徑
* @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
所指向的壓縮文件。您只需要將文件夾路徑和壓縮文件路徑替換為實(shí)際的值,然后在 Java 環(huán)境下運(yùn)行該程序即可。文章來源:http://www.zghlxwxcb.cn/news/detail-692847.html
請(qǐng)注意,上面的代碼塊中的 PackageName
是您自己所定義的包名。如果沒有將此類文件放在任何包名下,則可以將其忽略。文章來源地址http://www.zghlxwxcb.cn/news/detail-692847.html
到了這里,關(guān)于如何用java給一個(gè)文件夾打成壓縮包?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!