2

こんにちは、アンドロイドプログラミング初心者です。

SD カードに圧縮されたファイルを解凍するプログラムを作成しようとしていますが、デバッグ中に何かに気づきました。

public void testZipOrder() throws Exception {
            File file = new File(_zipFile);
            zis = new ZipInputStream(new FileInputStream(file));
            ZipEntry entry = null;
            while ( (entry = zis.getNextEntry()) != null ) {
             System.out.println( entry.getName());
            }
        }
    } 

これにより、次の出力が得られます。

06-27 00:42:06.360: I/System.out(15402): weee.txt
06-27 00:42:06.360: I/System.out(15402): hi/bye.txt
06-27 00:42:06.360: I/System.out(15402): hi/hiwayne.txt

与えるべきではありませんか

weee.txt
hi/
hi/bye.txt
hi/hiwayne.txt

代わりにそのフォルダを表示するものはありますか?

4

2 に答える 2

1

7zip で作成されたテスト zip ファイルと次の方法を使用して、自分の環境でこれを試しました。

public void testZipOrder() throws Exception {
    File file = new File("zip.zip");
    ZipInputStream zis = new ZipInputStream(new FileInputStream(file));
    ZipEntry entry = null;
    while ( (entry = zis.getNextEntry()) != null ) {
     System.out.println( entry.getName());
    }
    zis.close();
}

この方法は、実際にはあなたのものと同じであることに注意してください。

結果の出力は次のとおりです。

file1.txt
folder1/
folder1/file2.txt
folder1/folder2/
folder1/folder2/file3.txt

それは、あなたが探しているものだと私は信じています。そのため、問題はコードではなく、zip ファイル自体にあると思います。zip ファイルにディレクトリ「hi/」のエントリが含まれていない可能性があります。

zip ファイルの構造の基本的な説明については、こちらを参照してください。

于 2013-06-26T19:04:50.537 に答える