15

サイズが不明な大きなストリームをJavaのtarファイルに書き込みたいのですが。Apacheにはtarファイルを処理するcommonscompressライブラリがあることは知っていますが、サイズを事前に知っておく必要があります。Apache自身のを考えてみましょう:

TarArchiveEntry entry = new TarArchiveEntry(name);
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();

エントリのサイズは、書き込んだ後でわかりますが、前にはわかりません。コンテンツを書き終えたら、サイズがヘッダーに書き込まれる方法はありませんか?

4

2 に答える 2

1

結局、jtarを取得して変更したので、書き込むまでサイズを指定する必要はありません。これをネイティブに行うパッケージはないようです...この変更を要求する問題を設定しました。残念ながら、多くの醜いコードと独自のRandomAccessFileInputStream()の作成が必要でしたが、これはパッチのアップロードには適していません。

于 2012-05-09T13:04:00.293 に答える
1

追加するテキスト ファイルが 1 つだけの場合は、setSize(long) メソッドを使用してエントリのサイズを設定できます。

data は、tar されたい文字列です。

long size=data.getByte().length;
TarArchiveEntry entry = new TarArchiveEntry("sample.txt");
entry.setSize(size);
tarOutput.putArchiveEntry(entry);
tarOutput.write(contentOfEntry);
tarOutput.closeArchiveEntry();
于 2016-09-13T06:48:57.063 に答える