我使用ZipInputStream
编写了一些代码,但它有问题。
ZipInputStream zin=null;
zin=new ZipInputStream(new BufferedInputStream(
new FileInputStream("e:/testzip.zip")));
ZipEntry ze;
while((ze=zin.getNextEntry())!=null) {
System.out.println("readfile"+ze.getName());
int c=0;
while((c=zin.read())>0) {
System.out.write(c);
}
}
zin.close();
testzip.zip
中有3个文本文件。也就是说,正确的输出应该是三个文件名及其内容。但是,我的输出是3个文件名和2个内容。为什么只有2个内容,而不是3个?
答案 0 :(得分:2)
我用3个文本文件制作了一个拉链;它们是文本文件这一事实对于以下代码的工作非常重要。我阅读了所有条目并写出了它的名称和内容:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
public class Main {
public static void main(String[] args) throws Exception {
ZipFile zipFile = new ZipFile("D:\\zip.zip");
Enumeration<? extends ZipEntry> entries = zipFile.entries();
while(entries.hasMoreElements()) {
ZipEntry zipEntry = entries.nextElement();
System.out.println(zipEntry.getName());
BufferedReader bufferedeReader = new BufferedReader(new InputStreamReader(zipFile.getInputStream(zipEntry)));
String line = bufferedeReader.readLine();
while(line != null) {
System.out.println(line);
line = bufferedeReader.readLine();
}
bufferedeReader.close();
}
zipFile.close();
}
}
答案 1 :(得分:0)
对于这个用例,似乎ZipFile可能更合适,因为它可以为您提供zip文件的TOC。