查找谁创建了未删除的文件

时间:2013-10-15 09:07:46

标签: java jvm

我的代码中有很多地方会删除临时文件,在某些情况下,这些临时文件不会被删除。

有没有办法在Java中找到创建文件但未删除的文件(类似于在C++中查找内存泄漏)?

2 个答案:

答案 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访问。