2010-10-28 68 views
2

隨機訪問文件怎樣才能寫入到文件中的一定量的數據後,收到?寫在二郎山

我知道文件可以被打開,那麼就可以寫入使用文件:PWRITE(位置,BIN)。

我想知道的事情是,如果數據如被下載並需要寫入文件。人們如何有效地做到這一點?例如使用緩衝器(緩衝區是怎麼寫的?)

也就是文件保持打開的整段時間,直至下載完成或達到緩存每當它打開,數據需要寫入?

感謝

回答

2

如果您想二郎照顧緩存文件的寫你,你可以打開與{delayed_write, Size, Delay}選項的文件。然後,您可以儘可能多地訪問io:write,當緩衝區達到Size字節時或在緩衝區開始填充後的Delay毫秒之後,VM將負責將這些請求分配到一個OS寫入調用中。

這種方法將使你發出每次從網絡接收數據,但知道你會不會發布系統爲每個字節調用(如果你得到了真正病態網絡行爲)時io:write電話。

1

最有效的方法是將數據追加到內存中的緩衝液(一個IO列表?),並在一次操作中寫入一個文件。如果你要打開的文件,並寫入每個數據塊,因爲它到來時,你可以在append模式打開文件:

> file:write_file(FileName, DataToWrite, [append]). 

每個寫入操作將數據追加到文件的末尾。