FileChannelを使って、
 1.Fileにバイナリデータを書き込み
 2.同じFileをいったんcloseした後、再度開いて書き込んだデータを読み込み
 3.同じFileを最後に削除
ということを試しているのですが、削除ができません。
2の読み込みの部分を、データのappendみたいなことをしてから、
channelをcloseしてファイルを削除することはできます。
何か足りないのでしょうか?書いてみたコードは下記の通りです。

public void example(){
  byte[] bytes1 = {0x41, 0x42, 0x43};
  File file1 = new File("C:/temp/test.txt");
  RandomAccessFile raf1 = new RandomAccessFile(file1, "rw");
  FileChannel ch1 = raf1.getChannel();
  ByteBuffer buffer1 = ByteBuffer.wrap(bytes1);
  ch1.write(buffer1);
  ch1.close();
  raf1.close();
  
  File file2 = new File("C:/temp/test.txt");
  RandomAccessFile raf2 = new RandomAccessFile(file2, "rw");
  FileChannel ch2 = raf2.getChannel();
  MappedByteBuffer buf = ch2.map(FileChannel.MapMode.READ_ONLY, 0, ch2.size());
  byte[] data = new byte[(int)buf.capacity()];
  buf.get(data);
  buf = null;  
  ch2.close();
  raf2.close();

  file2.delete(); // data[0]〜data[2]に値は入っているが、deleteできない
}