java 解压rar 工具类
时间: 2024-09-04 14:03:57 浏览: 61
java rar解压工具类
在Java中解压RAR文件,你可以使用第三方库,比如Apache Commons Compress或者jRar。这些库提供了读取和解压RAR文件的接口。以下是一个使用Apache Commons Compress库来解压RAR文件的工具类示例:
```java
import org.apache.commons.compress.archivers.ArchiveException;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.rar.RarArchiveEntry;
import org.apache.commons.compress.archivers.rar.RarFile;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
public class RarUtil {
/**
* 解压RAR文件到指定目录
*
* @param rarFilePath RAR文件路径
* @param destDir 解压目标目录
*/
public static void unRar(String rarFilePath, String destDir) {
RarFile rarFile = null;
try {
rarFile = new RarFile(rarFilePath);
Enumeration<RarArchiveEntry> entries = rarFile.getEntries();
while (entries.hasMoreElements()) {
RarArchiveEntry entry = entries.nextElement();
if (entry.isDirectory()) {
// 创建目录
new File(destDir + File.separator + entry.getName()).mkdirs();
} else {
// 创建文件
File outputFile = new File(destDir + File.separator + entry.getName());
if (!outputFile.exists()) {
outputFile.createNewFile();
}
// 写入文件内容
OutputStream outputStream = new FileOutputStream(outputFile);
InputStream inputStream = new BufferedInputStream(rarFile.getInputStream(entry));
byte[] buffer = new byte[4096];
int length;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
outputStream.close();
inputStream.close();
}
}
} catch (ArchiveException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (rarFile != null) {
rarFile.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
使用此类前,请确保已经在项目中添加了Apache Commons Compress的依赖。如果你使用Maven,可以在`pom.xml`文件中添加以下依赖:
```xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version> <!-- 请检查最新版本号 -->
</dependency>
```
请注意,解压RAR文件可能涉及版权问题,确保你拥有解压RAR文件的合法权利。
阅读全文