テーブルからファイルに空間データを書き込もうとしています。しかし、ディスクに書き込む前に、ディスク上のデータの正確なサイズを知る必要があります。例として、次のコードを使用してディスクに書き込んでいるとします。
FileOutputStream fos = new FileOutputStream("t.tmp",false);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeInt(gid);
oos.writeUTF(fullname);
oos.writeInt(d.shape.length);
oos.write(d.shape);
oos.close();
fos.close();
ディスク上のファイルサイズは次のようになると考えていました:
size= 4B {for gid, int} + fullname.getBytes.length() {string} + 4B {d.shape.length, int} + d.shape.length
しかし実際には、これはディスク上の実際のファイル サイズとは大きく異なります。
また、ObjectOutputstream を使用して空のファイルを作成しても、ディスク上に 4B のスペースが発生することにも気付きました。
ディスク上のファイルサイズを計算する方法について何か助けはありますか?
(データをディスクに書き込んで実際のサイズを読み取ることはできません。これによりパフォーマンスが低下します。代わりに、メモリに格納されているデータ値に基づいてディスク上のデータのサイズを計算する必要があります。)