[英]Java NIO File Channel writing to file
我正在通過Internet發送文件,並且接收方接收到它發送的文件的位置,當然還有數據,我應該從發送的位置開始將接收到的數據寫到文件上,但是看起來NIO喜歡重寫頭寸之前的任何數據。
所以我在做的是
fc = new FileOutputStream(new File(file)).getChannel();
然后我在上面寫從pos thats之前定義的緩沖區
fc.write(buffer, pos);
當我發送拆分成多個文件並將文件寫入文件時,由於某種原因,我之前顯示的數據被零覆蓋
我還嘗試了調試的方式,例如檢查它實際上是從該位置開始寫入的,並且它工作正常,並且在傳輸之間存在延遲,因此它們無法在並發文件上寫入,無論如何這都不成問題。
我也在關閉頻道
fc.close();
因為我要分段發送文件,所以無法將fc保留在內存中。
我的代碼有什么問題,或者怎么可能從x位置開始寫入文件而又不清空該位置之前的數據?
在通道之間進行復制的規范方法如下:
while (in.read(buffer) > 0 || buffer.hasRemaining())
{
buffer.flip();
out.write(buffer);
buffer.compact();
}
如果要關閉並重新打開文件,則第一次后需要在附加模式下打開它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.