2

アプリケーションでファイルを圧縮するためにzip4j 1.3.1 を使用しています。今、ファイル自体の名前を変更せずに、zip 内のファイルの名前を変更しようとしています。そのための方法があるようですが、うまくいきません。

私のコードは次のようになります:

public static void zipFile(File dstPath, File srcFile, String optionalName) throws ZipException {

    ZipFile zipFile = new ZipFile(dstPath);
    ZipParameters parameters = new ZipParameters();
    parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);

    parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_MAXIMUM);
    parameters.setEncryptFiles(true);

    parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);

    parameters.setPassword(RutasDAO.getPassZip());

    //here I'm setting the name in the zip, but it's not working
    parameters.setFileNameInZip(optionalName);

    zipFile.addFile(srcFile, parameters);
}

zip 内のファイルは、srcFile で渡しているファイルと同じ名前です。もしかしてまだ実装されてない?代替手段、方法、またはライブラリを知っていますか?

ありがとう。

編集:目的の名前で新しいファイルを作成し、それをソースファイルとして使用するソリューションを思いつきました:

File renamedFile = new File(tmpDirectory + optionalFileName);
copyFile(srcFile, renamedFile);
4

1 に答える 1

7

今日、私は同じ問題に遭遇しました。zip4j をデバッグした後の解決策は非常に簡単です。

parameters.setSourceExternalStream(true);

他に変更はありませんでしたが、ファイルは新しい名前でアーカイブに表示されました。この設定もお役に立てば幸いです。

幸運をお祈りしています

于 2013-10-10T09:24:59.177 に答える