File.deleteOnExit()是否保证即使JVM过早终止也能删除文件? 最佳答案 正如TimBender所说,File.deleteOnExit()不保证文件确实被删除。但是,在Unixish系统(例如Linux或OSX)上,可以在写入临时文件之前(但在打开它之后)将其删除。只要你为文件保留一个打开的描述符,你就可以继续读写它,即使目录树中不再存在该文件,操作系统也会自动回收文件使用的空间当你程序退出(或关闭文件的最后一个描述符)。这在Windows上不起作用,它具有不同的文件系统语义并且不允许删除打开的文件。但是,在可移植
我有一些调用deleteOnExit()的临时文件。我还有一个runnable,我使用addShutdownHook()注册它,以便在调用System.exit时运行。是否可以保证在我的关闭Hook运行时临时文件仍然可用? 最佳答案 当我们查看底层实现时,两者都在处理Shutdown-Hook。当我们处理addShutdownHook(ApplicationShutdownHooks)时,我们的代码中有如下一段代码。Runtime.getRuntime().addShutdownHook(newThread(){publicvoid
我创建了一些文件供临时使用,并将它们用作某些方法的输入。我调用deleteOnExit()在我创建的所有文件上。但是一个文件仍然存在。我假设这是因为文件仍在使用中,但编译器不会在当前行完成后才转到下一行吗?(单线程)虽然由于java覆盖而实际上不是问题,但始终只有一个文件。我想了解为什么会发生这种情况,以及我是否可以使用Thread.sleep(sometime);编辑:-Filex=newfile("x.txt");newclass1().method1();创建所有文件(5)后,我刚刚添加了这一行x.deleteOnExit();y.deletOnExit()andsoon...除
这是此方法的源注释:NotethatonAndroid,theapplicationlifecycledoesnotincludeVMtermination,socallingthismethodwillnotensurethatfilesaredeleted.Instead,youshouldusethemostappropriateoutof:*Usea{@codefinally}clausetomanuallyinvoke{@link#delete}.*Maintainyourownsetoffilestodelete,andprocessitatanappropriatepoi
Java中java.io.File类中的delete()和deleteOnExit()方法有什么区别? 最佳答案 delete()会立即删除文件,而调用deleteOnExit()时不会删除文件。相反,当程序结束或更准确地说虚拟机终止时,文件将被删除。如果虚拟机不正常终止,deleteOnExit()无效。 关于java-java中deleteOnExit()方法的使用,我们在StackOverflow上找到一个类似的问题: https://stackover
JavaIO有File.deleteOnExit(),这是一种删除在JVM正常终止期间调用的文件的方法。我发现这对于清理临时文件非常有用,尤其是在单元测试期间。但是,我在JavaNIO的Files中没有看到同名的方法。类(class)。我知道我可以执行path.toFile().deleteOnExit(),但我想知道是否有使用NIO的替代方法。还有其他选择吗?如果没有,为什么没有? 最佳答案 简答JavaNIO中不能删除任意文件,但可以使用StandardOpenOption.DELETE_ON_CLOSE当打开一个新流时,一旦流