在Java中,可以使用java.util.zip
包中的類來處理ZIP文件
如果你使用Maven,可以在pom.xml
文件中添加以下依賴:
<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
</dependencies>
import org.apache.commons.compress.archivers.zip.*;
import java.io.*;
import java.nio.file.*;
import java.util.zip.ZipEntry;
public class UnzipUtility {
public static void main(String[] args) {
String zipFilePath = "path/to/your/zipfile.zip";
String destDirectory = "path/to/your/destination/directory";
try {
unzip(zipFilePath, destDirectory);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void unzip(String zipFilePath, String destDirectory) throws IOException {
File destDir = new File(destDirectory);
if (!destDir.exists()) {
destDir.mkdir();
}
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();
while (entry != null) {
String filePath = destDirectory + File.separator + entry.getName();
if (!entry.isDirectory()) {
extractFile(zipIn, filePath);
} else {
File dir = new File(filePath);
dir.mkdirs();
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
zipIn.close();
}
private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath))) {
byte[] bytesIn = new byte[4096];
int read = 0;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
}
}
}
import org.apache.commons.compress.archivers.zip.*;
import java.io.*;
import java.nio.file.*;
public class ZipUtility {
public static void main(String[] args) {
String sourceDirectory = "path/to/your/source/directory";
String zipFilePath = "path/to/your/zipfile.zip";
try {
createZip(sourceDirectory, zipFilePath);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void createZip(String sourceDirectory, String zipFilePath) throws IOException {
File sourceDir = new File(sourceDirectory);
if (!sourceDir.isDirectory()) {
throw new IllegalArgumentException("Source directory is not a valid directory");
}
try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
addDirectoryToZip(sourceDir, sourceDir.getName(), zipOut);
}
}
private static void addDirectoryToZip(File directory, String baseName, ZipOutputStream zipOut) throws IOException {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
addFileToZip(file, baseName + File.separator + file.getName(), zipOut);
}
}
}
private static void addFileToZip(File file, String fileName, ZipOutputStream zipOut) throws IOException {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) {
byte[] bytesIn = new byte[4096];
int read = 0;
while ((read = bis.read(bytesIn)) != -1) {
zipOut.write(bytesIn, 0, read);
}
}
}
}
這些示例展示了如何讀取ZIP文件中的內容并將其提取到目標目錄,以及如何將多個文件和目錄打包到一個ZIP文件中。你可以根據需要修改這些示例以滿足你的需求。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。