1

ファイルの解凍中に問題が発生しました。「開くことができませんでした:ENOTDIR(ディレクトリではありません)」エラーが発生します。デバッグ後、問題がこの関数にあることがわかりました。
現在のZipEntryがディレクトリであると判断した後、パスを使用してこの関数を呼び出します。

private void dirChecker(String dir) {
        File FiledirChecker = new File(PATH + dir); // PATH+dir = /mnt/sdcard/Pictures/Hafs

        if (!FiledirChecker.isDirectory())
            FiledirChecker.mkdirs();
    }

この機能が終了した後、Picturesディレクトリを参照しましたが、Hafsはディレクトリではなく、「Hafs」と呼ばれる0バイトのファイルです。

なぜこうなった?

他のディレクトリ(「Hafs」以外)の場合、mkdirsは通常フォルダを作成することを指摘しておく必要があります。ただし、このディレクトリ(Hafs)の場合のみ、mkdirsはディレクトリではなくファイルを作成します。

4

2 に答える 2

7

これは、コードの他の場所で、空のファイルがすでに作成されているために発生しています。

または、コードがディレクトリを作成できなかったときにファイルが最後に実行された残りのファイルです。

于 2012-08-15T11:54:32.087 に答える
0

私が何かを見逃さない限り、あなたのファイルはすでにどこかに作成されています。
私があなたのコードで見ることができることによると、
1)ファイルがディレクトリではないかどうかを確認します
2)1)が真である場合、完全なディレクトリ構造と、すでに存在する可能性のあるファイルと同じ名前のディレクトリを作成しようとします。

于 2012-08-15T11:55:12.603 に答える