如何用java給一個(gè)文件夾打成壓縮包(附代碼)
代碼示例:
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 父級路徑
* @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)行該程序即可。
請注意,上面的代碼塊中的 PackageName 是您自己所定義的包名。如果沒有將此類文件放在任何包名下,則可以將其忽略。
總結(jié)
到此這篇關(guān)于如何用java給一個(gè)文件夾打成壓縮包的文章就介紹到這了,更多相關(guān)java文件夾打壓縮包內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 實(shí)戰(zhàn)項(xiàng)目錘煉之網(wǎng)上圖書館管理系統(tǒng)的實(shí)現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用Java+jsp+servlet+mysql+ajax實(shí)現(xiàn)一個(gè)網(wǎng)上圖書館管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平2021-11-11
如何用Java結(jié)合經(jīng)緯度位置計(jì)算目標(biāo)點(diǎn)的日出日落時(shí)間詳解
這篇文章主詳細(xì)講解了如何基于目標(biāo)點(diǎn)的經(jīng)緯度計(jì)算日出日落時(shí)間,提供了在線API和Java庫兩種計(jì)算方法,并通過實(shí)際案例展示了其應(yīng)用,需要的朋友可以參考下2025-01-01
Java中DateTimeFormatter的使用方法和案例
在Java中,DateTimeFormatter類用于格式化和解析日期時(shí)間對象,它是日期時(shí)間格式化的強(qiáng)大而靈活的工具,本文將和大家一起探討Java中DateTimeFormatter的使用方法和案例,需要的朋友可以參考下2023-10-10
Jmeter關(guān)聯(lián)實(shí)現(xiàn)及參數(shù)化使用解析
這篇文章主要介紹了Jmeter關(guān)聯(lián)實(shí)現(xiàn)及參數(shù)化使用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
SpringBoot實(shí)現(xiàn)自定義條件注解的代碼示例
在Spring Boot中,條件注解是一種非常強(qiáng)大的工具,它可以根據(jù)特定的條件來選擇是否加載某個(gè)類或某個(gè)Bean,文將介紹如何在Spring Boot中實(shí)現(xiàn)自定義條件注解,并提供一個(gè)示例代碼,需要的朋友可以參考下2023-06-06
Java使用分布式實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離的示例代碼
在MySQL中可以通過配置主從復(fù)制來實(shí)現(xiàn)數(shù)據(jù)同步,本文主要介紹了Java使用分布式實(shí)現(xiàn)數(shù)據(jù)庫讀寫分離,具有一定的參考價(jià)值,感興趣的可以了解一下2024-07-07
Java使用DateTimeFormatter實(shí)現(xiàn)格式化時(shí)間
這篇文章主要介紹了Java使用DateTimeFormatter實(shí)現(xiàn)格式化時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

