0

を使用してコードを記述し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();

には3つのテキストファイルがありますtestzip.zip。つまり、正しい出力は3つのファイル名とその内容である必要があります。ただし、私の出力は3つのファイル名と2つの内容です。なぜ3つではなく2つのコンテンツしかないのですか?

4

2 に答える 2

2

3つのテキストファイルを含むzipを作成しました。それらがテキストファイルであるという事実は、次のコードが機能するために重要です。私はすべてのエントリを読み、その名前と内容を書きます。

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();
    }

}
于 2012-04-10T09:51:11.730 に答える
0

このユースケースでは、Zipファイルの目次が表示される可能性があるため、ZipFileの方が適切なようです。

于 2012-04-10T10:13:43.707 に答える