この JUnit テストを実行すると、以下がfile.delete()
返されるため失敗しますfalse
。
@Test
public void testDeleteTempFile() throws Exception {
File file = Files.createTempFile("_file_del_test", ".txt").toFile();
try (RandomAccessFile f = new RandomAccessFile(file, "rw");
FileChannel chan = f.getChannel()) {
MappedByteBuffer buf = chan.map(
FileChannel.MapMode.READ_WRITE, 0, 42);
for (int i = 0; i < 42; i++) {
buf.put((byte) 42);
}
}
Assert.assertTrue(file.delete());
}
これはなぜですか?file.delete()
try ブロックの後にすべてのリソースが閉じられていると思いましたが、失敗する理由はないはずです。