如何通过java ZipInStream类将压缩文件解压到指定的文件夹中
发布网友
发布时间:2022-04-23 14:17
我来回答
共2个回答
热心网友
时间:2023-09-16 20:34
通过ZipInStream类将压缩文件解压到指定的文件夹中:
源程序是:
import java.io.*;
import java.util.zip.*;
public class Decompressing { // 创建文件
public static void main(String[] temp) {
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
zin = new ZipInputStream(new FileInputStream("F:/hello.zip"));
// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {
// 如果entry不为空,并不在同一目录下
File file = new File("F:\" + entry.getName()); // 获取文件目录
System.out.println(file);
if (!file.exists()) { // 如果该文件不存在
file.mkdirs();// 创建文件所在文件夹
file.createNewFile(); // 创建文件
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
热心网友
时间:2023-09-16 20:34
import java.io.*;
import java.util.zip.*;
public class CompressD {
// 缓冲
static byte[] buffer = new byte[2048];
public static void main(String[] args) throws Exception {
// 来源
File inputDir = new File("C:\\CompressTest\\");
// 目标
FileOutputStream fos = new FileOutputStream("C:\\CompressTest.zip");
// 过滤
ZipOutputStream zos = new ZipOutputStream(fos);
// 压缩
zip(inputDir.listFiles(), "", zos);
// 关闭
zos.close();
}
private static void zip(File[] files, String baseFolder, ZipOutputStream zos)
throws Exception {
// 输入
FileInputStream fis = null;
// 条目
ZipEntry entry = null;
// 数目
int count = 0;
for (File file : files) {
if (file.isDirectory()) {
// 递归
zip(file.listFiles(), file.getName() + File.separator, zos);
continue;
}
entry = new ZipEntry(baseFolder + file.getName());
// 加入
zos.putNextEntry(entry);
fis = new FileInputStream(file);
// 读取
while ((count = fis.read(buffer, 0, buffer.length)) != -1)
// 写入
zos.write(buffer, 0, count);
}
}
}