隨機訪問文件怎樣才能寫入到文件中的一定量的數據後,收到?寫在二郎山
我知道文件可以被打開,那麼就可以寫入使用文件:PWRITE(位置,BIN)。
我想知道的事情是,如果數據如被下載並需要寫入文件。人們如何有效地做到這一點?例如使用緩衝器(緩衝區是怎麼寫的?)
也就是文件保持打開的整段時間,直至下載完成或達到緩存每當它打開,數據需要寫入?
感謝
隨機訪問文件怎樣才能寫入到文件中的一定量的數據後,收到?寫在二郎山
我知道文件可以被打開,那麼就可以寫入使用文件:PWRITE(位置,BIN)。
我想知道的事情是,如果數據如被下載並需要寫入文件。人們如何有效地做到這一點?例如使用緩衝器(緩衝區是怎麼寫的?)
也就是文件保持打開的整段時間,直至下載完成或達到緩存每當它打開,數據需要寫入?
感謝
如果您想二郎照顧緩存文件的寫你,你可以打開與{delayed_write, Size, Delay}
選項的文件。然後,您可以儘可能多地訪問io:write
,當緩衝區達到Size
字節時或在緩衝區開始填充後的Delay
毫秒之後,VM將負責將這些請求分配到一個OS寫入調用中。
這種方法將使你發出每次從網絡接收數據,但知道你會不會發布系統爲每個字節調用(如果你得到了真正病態網絡行爲)時io:write
電話。
我認爲file:pwrite/3
有你需要的東西。
最有效的方法是將數據追加到內存中的緩衝液(一個IO列表?),並在一次操作中寫入一個文件。如果你要打開的文件,並寫入每個數據塊,因爲它到來時,你可以在append
模式打開文件:
> file:write_file(FileName, DataToWrite, [append]).
每個寫入操作將數據追加到文件的末尾。