2

次のコードに問題があります。

    TFile src = new TFile(this.getMellomStasjon());
    TFile dst = new TFile(this.getZipFolder()+""+zipFile+".zip");
    if(dst.isDirectory())
        dst = new TFile(dst, src.getName());

    TFile.cp_rp(src, dst, null);
    TFile file = newNonArchiveFile(dst);
    if(dst.isArchive())
        TFile.umount(dst);

私の目標は、TrueZip を使用して、ファイルを含むディレクトリを ZIP アーカイブに入れることです。問題は、コードがローカルでは機能するが、運用コンピューターでは機能しないことです。ローカルでは単一の ZIP ファイルを取得しますが、本番環境では、アーカイブ (仮想ディレクトリ) に入れようとしているファイルを含むフォルダーを取得します。4GB を超えるコンテンツをアーカイブしているため、TrueZip を使用する必要があります。

(仮想) ディレクトリの代わりに、TrueZip に強制的にアーカイブを作成させる方法はありますか?

4

2 に答える 2

2

モジュール TrueZIP Driver ZIP の JAR アーティファクトがランタイム クラス パスに存在しなかったため、おそらく機能しませんでした。

それを確認するには、カスタム TArchiveDetector を設定して、ZipDriver をコンパイル時の依存関係にすることができます。以下に例を示します: http://truezip.java.net/usecases/aff.html

ここに示すコードには問題があります。おそらく次のように修正する必要があります。

// Call this once at application startup to make the ZipDriver a compile time
// dependency.
TFile.setDefaultArchiveDetector(
  new TArchiveDetector(
  "zip",
  new ZipDriver(IOPoolLocator.SINGLETON)));

// Here's the work.
TFile src = new TFile(this.getMellomStasjon());
TFile dst = new TFile(this.getZipFolder(), zipFile + ".zip");
TFile.cp_rp(src, dst, TArchiveDetector.NULL);
TFile.umount(dst);
于 2011-10-01T20:43:08.833 に答える
0

Apache による代替ライブラリCommons Compressionが見つかりました。TrueZip の代わりに使用します。4GB以上のファイルもサポートしているようです。

于 2011-09-30T06:13:17.570 に答える