ZIP文件是一种流行的档案文件,可以将若干个文件压缩到一个ZIP文件中。 使用ZipInputStream类创建的输入流对象可以读取压缩到ZIP文件中的各个文件(即解压)。假设要解压一个名为book.zip的文件,首先使用ZipInputStream的构造方法public ZipInputStream(InputStream in)创建一个对象in,例如 ZipInputStream in = new ZipInputStream(new FileInputStream(“book.zip”)) 然后让ZipInputStream的对象in找到book.zip中的下一个文件,例如: ZipEntry zipEntry = in.getNextEntry(); 那么in调用read()方法可以读取找到的文件(解压缩)。 实验要求: 现要求变成程序读取book.zip,并将book.zip中含有的文件重新存放到当前目录的myboo文件夹中,即将book.zip中的内容加压到mybook文件夹中。
时间: 2024-03-17 14:46:55 浏览: 83
好的,您可以使用以下Java代码来实现这个需求:
```java
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnzipFile {
public static void main(String[] args) {
String zipFilePath = "book.zip";
String destDirectory = "mybook";
File destDir = new File(destDirectory);
if (!destDir.exists()) {
destDir.mkdir();
}
try (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.mkdir();
}
zipIn.closeEntry();
entry = zipIn.getNextEntry();
}
System.out.println("解压完成!");
} catch (IOException e) {
e.printStackTrace();
}
}
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;
while ((read = zipIn.read(bytesIn)) != -1) {
bos.write(bytesIn, 0, read);
}
}
}
}
```
这个程序会将book.zip文件中的内容解压缩到当前目录下的mybook文件夹中。您可以根据自己的需求修改输入输出文件的路径。
阅读全文