3

私はjava.util.zipzipファイルを抽出するために使用していますが、特定のzipファイルで実行すると、

java.util.zip.ZipException: error in opening zip file

今後、Windows エクスプローラーを使用して zip ファイルを開きますが、何も表示されません。Windows に組み込まれている抽出ユーティリティを使用すると、zip ファイルが無効であると表示されます。

7zip を使用して解凍したところ、問題なく動作したので、開いてみると、ファイル名のないフォルダーがあることに気付きました。

画像

画像

この zip ファイルの開き方がわかりません。文字を含まないファイル名を使用できること、またはこれを考慮して作成されたアプリケーションがあることさえ知りませんでした...

私が試すことができるいくつかの解決策は何ですか?

私が考えた 1 つの解決策は、7zip を実行してファイルを処理することですが、エンドユーザーのマシンに 7zip がない可能性があるため、アプリケーションに 7zip ファイルを含める必要があります。

4

1 に答える 1

1

Windows では、空のフォルダー名やスペースのみのフォルダー名は許可されませんが、7zip では、フォルダー名にスペースのみを使用して zip 内にフォルダーを作成できます。

ZipEntry によって返されるファイル名に空の文字列がないかどうかを確認する必要があります。

private static String fixFileName(String filename)
{
    String[] sArray = filename.split("\\s+");
    String retval = "";
    for (String s : sArray)
    {
        if (s.trim().equals(""))
        {
            s = String.valueOf(System.currentTimeMillis());
        }
        retval += s;
    }

    return retval;
}
于 2013-07-10T14:52:17.617 に答える