1

ファイルが書き込まれると、ファイルセグメントごとにinにwrite対応する関数が呼び出されます。.writefuse_operations

これは、より大きなファイル(たとえば、12720バイト)の場合、書き込み関数を4回呼び出すことができることを意味します。

1. size=4096, offset=0
2. size=4096, offset=4096
3. size=4096, offset=8192
4. size=432, offset=12288

最大セグメントサイズが4096バイトの4つのセグメントがあるためです。

関数内で、最後のセグメントサイズがいつnwriteになるかを確認したいと思います。writeすべてのセグメントをバッファーに入れ、この最後に書き込まれたセグメントを使用して、バッファーにオブジェクト全体が含まれていることを通知し、別の場所(オブジェクトストアなど)に置くことができるようにします。書き込まれる前に書き込まれているオブジェクトのサイズを知ることにより、単純な等式テストfile_size == size + offsetを実行して、最後のセグメントがいつ書き込まれるかを判断できます。

4

2 に答える 2

1

どうやら、私はできません。ファイルハンドラーを閉じた後、オブジェクト全体を別の場所(オブジェクトストアなど)に配置することしかできません。

于 2013-03-26T20:11:26.757 に答える
-1

チャンクの長さが4096未満の場合は、ファイルの最後にいることがわかります。先に進んで、バッファの内容を書き出してください!

于 2013-11-24T19:15:29.540 に答える