我试图使用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