2

当我运行这个 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());
}

为什么会这样?我认为在 try 块之后所有资源都已关闭,应该没有file.delete()失败的原因。

4

0 回答 0