簡體   English   中英

Java NIO文件通道寫入文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM