zipファイルまたはgzipファイルに効率的に行を追加できますか?Java zip append行
私は株式市場データを直接ファイルシステムに保存していますが、私は約5msごとに更新されている約40種類のファイルを持っています。
どうすればよいですか?
zipファイルまたはgzipファイルに効率的に行を追加できますか?Java zip append行
私は株式市場データを直接ファイルシステムに保存していますが、私は約5msごとに更新されている約40種類のファイルを持っています。
どうすればよいですか?
zipファイルではなくデータベースを使用します。
ダンプデータを格納するフラットファイルが推奨されます –
zipファイルを編集するサイクルが完了すると、あまりにも多くのオーバーヘッドが発生します。私はいくつかの合理的なレート(すなわち、5秒またはそれ以上)でメモリの変更を蓄積し、ターゲットファイルを変更する方が良いと思う。
1つのアプローチは、compressing data sent over a socketのようになり、圧縮されたブロックを時折ディスクにフラッシュします。
java.nio.file.FileSystems:
http://docs.oracle.com/javase/7/docs/technotes/guides/io/fsp/zipfilesystemprovider.html
Java SE 7リリースで導入されたzipファイルシステムプロバイダは、カスタムファイルシステムプロバイダの実装です。 zipファイルシステムプロバイダは、zipまたはJARファイルをファイルシステムとして扱い、ファイルの内容を操作する機能を提供します。 zipファイルシステムプロバイダは、複数のファイルシステム(各zipファイルまたはJARファイルに対して1つのファイルシステム)を作成します。
TrueZip
http://truezip.java.net/
であるかのようにアーカイブファイルへの透過的なアクセスを提供する仮想ファイルシステム(VFS)のためのJavaベースのプラグインフレームワークでありますTrueZIPが、彼らは単なるディレクトリ
メモリをキャッシュに使用し、ディスク操作を減らし、書き込みを非ブロックにしてください。
ZipOutputStreamのwriteメソッドを使用すると、指定したオフセットで書き込むことができます。
String filepath = new String("/tmp/updated.txt")
FileOutputStream fout = new FileOutputStream("/tmp/example.zip");
ZipOutputStream zout = new ZipOutputStream(fout);
byte[] file = IOUtils.toByteArray(mWriter.toString());
short yourOffset = 0;
ZipEntry ze = new ZipEntry(filepath);
try {
zout.putNextEntry(ze);
zout.write(file, yourOffset, file.length);
zout.closeEntry();
} catch(Exception e) {
e.printStackTrace();
}
あなたは、Apache CommonsのIOUtilsを使用してバイト配列(輸入org.apache.commons.io.IOUtils)にファイルを変換する場合は、あなたのオフセットどこラインに書き込みを呼び出すことにより、zipエントリを書き換えると置き換えることができますあなたが編集を開始したい。この場合、ファイル全体が0からfile.lengthに書き込まれます。 zip内のファイルを置き換えるには、ドライブ上の更新されたファイルへのパスを指定してZipEntryを作成します。
Zipファイルには*行*が含まれていませんが、ファイルが含まれています。 –
ようこそスタックオーバーフローへ。あなたの質問には詳細がないので、私たちはあなたを助けることができないのではないかと心配しています。これまでに何を試みましたか?その結果は何ですか? http://stackoverflow.com/questions/how-to-ask –
5ミリ秒ごとに40個のファイルを含むzipファイルを更新してください。私はとても怖いです –