我試圖使用FileChannel將特定字節寫入文件的某個位置。但實際上文件縮小到我寫更改的最後位置。我不喜歡這樣寫道:Java:使用FileChannel寫入文件會使文件縮小?
Path path = Paths.get("I://music - Copy.mp3");
System.out.println(Files.size(path)/1024 + "KB");
try (FileChannel chan = new FileOutputStream(path.toFile()).getChannel()) {
chan.position(1024 * 1024);
ByteBuffer b = ByteBuffer.allocate(1024);
chan.write(b);
System.out.println("Write 1KB of data");
}
System.out.println(Files.size(path)/1024 + "KB");
,這是輸出I得到:
3670KB
Write 1KB of data
1025KB
任何人能告訴我在哪裏出了問題?
我試了一下,得到的輸出大小增加了1 KB(3670KB-3671KB)。這不僅僅意味着它被寫入文件結尾而不是指定位置? – Henry