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");
これが私が得た出力です:
3670KB
Write 1KB of data
1025KB
どこが悪いのか誰か教えてもらえますか?