我試圖使用FileChannel.transferFrom移動文件的一些內容到開始。FileChannel.transfer從移動文件內容
try (RandomAccessFile rafNew = new RandomAccessFile(_fileName, "rw");
RandomAccessFile rafOld = new RandomAccessFile(_fileName, "r");)
{
rafOld.seek(pos);
rafOld.getChannel().transferTo(0, count, rafNew.getChannel());
} catch (IOException e) {
throw new RuntimeException(e.getMessage());
}
這樣做的結果是一個具有奇怪數據重複的文件。如果我首先將數據傳輸到緩衝區文件,然後再將緩衝區文件傳輸回原始文件,則該示例有效。
Java文檔沒有提到源和目標是相同文件的情況。
問題不在於此,源和目的地相同,但Java操作在流上不允許在文件頂部附加內容。 [鏈接](http://stackoverflow.com/questions/6127648/writing-in-the-beginning-of-a-text-file-java) – dpolaczanski
@dpolaczanski這裏沒有流,你的鏈接沒有說你聲稱它說什麼。 – EJP
FileChannel類的JavaDoc實際上表示字節可以從文件傳輸到某個_other_通道,反之亦然。 –