我的代码中有很多地方会删除临时文件,在某些情况下,这些临时文件不会被删除。
有没有办法在Java中找到创建文件但未删除的文件(类似于在C++
中查找内存泄漏)?
答案 0 :(得分:1)
通过覆盖File类,您可以将打开的文件添加到集合中,并在删除它时将其删除。这样你应该能够探测任何给定Point打开的文件。不确定这是你在找什么。
答案 1 :(得分:0)
这不是一个“漂亮”的解决方案,但您可以使用自定义SecurityManager
并查找FilePermission
。
private static class FileSecurityManager extends SecurityManager {
@Override
public void checkPermission(Permission perm) {
if (perm instanceof FilePermission) {
System.out.println(perm);
}
// super.checkPermission(perm);
}
}
public static void main(String[] args) throws Exception {
System.setSecurityManager(new FileSecurityManager());
Files.delete(Files.createTempFile(null, null));
File.createTempFile("tempfile", null).delete();
}
此示例适用于对文件系统的标准IO和NIO访问。