1
私は、圧縮オブジェクトをファイルに書き込むコードを書いていました。私の質問は、書き込まれているオブジェクトのファイルサイズの増分を追跡できる方法はありますか?ここに私のコードは次のとおりです。java:実行時のファイルサイズの追跡を続けますか?
public static void storeCompressedObjs(File outFile, ArrayList<Object[]> obj) {
FileOutputStream fos = null;
GZIPOutputStream gz = null;
ObjectOutputStream oos = null;
try {
fos = new FileOutputStream(outFile);
gz = new GZIPOutputStream(fos);
oos = new ObjectOutputStream(gz);
for (Object str : obj) {
oos.writeObject(str);
oos.flush();
//I was hoping to print outFile.length() here, but it doesn't work
}
} catch (IOException e) {
e.printStackTrace();
} finally {
oos.close();
gz.close();
fos.close();
}
}
私はすべてのoos.writeObject(str);
後flush
を使用して、outFile.length()
を使用してファイルサイズを取得しようとしましたが、私はそれをフラッシュどんなに、ファイルのサイズは、その最後のジャンプまで変わりません最終サイズ。とにかく私はそれを修正することができますか?ありがとう
私はメソッドを呼び出したとき、私は '8を得た - > 10 12 - > 10 18 - > 10 26 - > 10 34 - > 10 34 - > 51'そこに5 10人いるのはなぜですか?増やしてはいけませんか? – user685275
とにかく、これは私が欲しいものを達成しました。ありがとうございました。 – user685275
これは、 'GZIPOutputStream.flush()' *は出力をフラッシュせず、多少の圧縮レベルを保証しているか、それ。 –