Java解压zip和rar文件
在Java中,我们可以使用一些库来解压缩zip和rar文件。本文将介绍如何使用java.util.zip
和org.apache.commons.compress
库来进行解压缩操作,并提供示例代码。
解压zip文件
java.util.zip
包提供了用于压缩和解压缩文件的类和接口。其中,ZipInputStream
和ZipEntry
类可用于解压缩zip文件。
首先,我们需要创建一个ZipInputStream
对象,并通过FileInputStream
将zip文件的路径传递给它。然后,我们可以使用getNextEntry()
方法获取zip文件中的每个条目(文件或目录)。
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnzipExample {
public static void unzip(String zipFilePath, String destDir) throws IOException {
File destDirectory = new File(destDir);
if (!destDirectory.exists()) {
destDirectory.mkdir();
}
ZipInputStream zipIn = new ZipInputStream(new FileInputStream(zipFilePath));
ZipEntry entry = zipIn.getNextEntry();
while (entry != null) {
String filePath = destDir + File.separator + entry.getName();
if (!entry.isDirectory()) {
extractFile(zipIn, filePath);
} else {
File dir = new File(filePath);
dir.mkdir();
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
zipIn.close();
}
private static void extractFile(ZipInputStream zipIn, String filePath) throws IOException {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
byte[] bytesIn = new byte[4096];
int read;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
bos.close();
}
}
在上面的代码中,我们定义了一个unzip()
方法来解压缩zip文件。该方法接受两个参数:zip文件的路径和目标目录的路径。在方法中,我们使用mkdir()
方法创建目标目录,然后通过getNextEntry()
方法遍历zip文件中的条目。对于每个条目,我们判断它是文件还是目录,然后分别调用extractFile()
方法解压文件或创建目录。
现在,我们可以在我们的应用程序中使用UnzipExample
类来解压缩zip文件。
public class Main {
public static void main(String[] args) {
String zipFilePath = "path/to/your/zip/file.zip";
String destDir = "path/to/your/destination/directory";
try {
UnzipExample.unzip(zipFilePath, destDir);
System.out.println("Zip file was successfully extracted.");
} catch (IOException e) {
System.out.println("Failed to extract zip file: " + e.getMessage());
}
}
}
在上面的示例中,我们提供了zip文件的路径和目标目录的路径。然后,我们调用unzip()
方法来解压缩zip文件。如果解压缩成功,将打印一条成功信息;否则,将打印失败信息。
解压rar文件
相比于zip文件,Java没有内置的库来处理rar文件。但是,我们可以使用第三方库org.apache.commons.compress
来解压缩rar文件。
首先,我们需要将以下依赖项添加到我们的项目中的pom.xml
文件中(如果使用Maven构建项目):
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.21</version>
</dependency>
然后,我们可以使用ArchiveStreamFactory
类和ArchiveEntry
接口来解压缩rar文件。
import org.apache.commons.compress.archivers.ArchiveEntry;
import org.apache.commons.compress.archivers.ArchiveInputStream;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import java.io.*;
public class UnrarExample {
public static void unrar(String rarFilePath, String destDir) throws IOException {
ArchiveStreamFactory factory = new ArchiveStreamFactory();
ArchiveInputStream rarIn = factory.createArchiveInputStream("rar", new FileInputStream(rarFilePath));
ArchiveEntry entry = rarIn.getNextEntry();
while (entry != null) {
String filePath = destDir + File.separator + entry.getName();
if (!entry.isDirectory()) {
extractFile(rarIn, filePath);
} else {
File dir = new File(filePath);
dir.mkdir();
}
entry = rarIn.getNextEntry();
}
rarIn.close();
}
private static