Java でクロスプラットフォームの非分散ディスク ストレージ プロトコルを開発しています。ファイルはかなり独立した、通常は小さな (< 4 KB) "データ チャンク" で構成されます。FS ブロックの境界を越えてチャンクを書き込むことを回避すると、FS ブロックの読み取りエラーが触れるチャンクが少なくなるため、プロトコルをより堅牢にすることができますか? ほとんどのファイル システムでは、ファイル データの先頭がブロック アラインされていると想定できますか?
ターゲット パーティションのブロック サイズが 4 KB であることがわかっているとします。
SeekableByteChannel ch = Files.newByteChannel(file, CREATE, WRITE);
ch.write(buffer);
long pos = ch.position();
long alignment = 4096;
if (pos % alignment != 0)
ch.position(((pos / alignment) + 1) * alignment);
ch.write(buffer2); // will buffer2 data be really FS block-aligned?