2013-10-15 2 views
0

내 코드에는 임시 파일이 삭제되는 곳이 많으며 일부 경우 이러한 임시 파일은 삭제되지 않습니다.삭제되지 않은 파일을 만든 사람 찾기

Java에서 파일을 만들었지 만 삭제되지 않은 방법을 찾을 수 있습니까 (C++에서 메모리 누수를 발견하는 것과 유사)?

+0

내가 아는 것은 아닙니다. IntelliJ와 같은 IDE를 사용해 코드의 지시선 전체를 검색하십시오. – duffymo

+0

'File' 클래스의'delete()'를 사용하여 코드 내에서 파일을 삭제하고 있습니까? – SudoRahul

+0

예,하지만 일부 장소를 그리워하는 것 같습니다. 새 파일이 300 번 이상 있습니다. (문제가되는 곳을 찾기가 어려울 수 있습니다.) –

답변

1

File 클래스를 재정 의하여 열려있는 파일을 세트에 추가하고 삭제할 때 파일을 제거 할 수 있습니다. 그렇게하면 특정 지점에서 어떤 파일이 열리는 지 확인할 수 있습니다. 그것이 당신이 찾고있는 것이 확실하지 않습니다.

+0

그리고 나서 전체 코드 기반을 검색하여 원시 File 클래스가 사용되지 않도록하십시오. –

+0

동의합니다.하지만 동의해야합니다. – AppX

+0

작동 할 수도 있지만 move/copy를 사용하여 파일을 만들 경우에도 여전히 문제가됩니다. –

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 액세스와 함께 작동합니다.

관련 문제