내 코드에는 임시 파일이 삭제되는 곳이 많으며 일부 경우 이러한 임시 파일은 삭제되지 않습니다.삭제되지 않은 파일을 만든 사람 찾기
Java에서 파일을 만들었지 만 삭제되지 않은 방법을 찾을 수 있습니까 (C++
에서 메모리 누수를 발견하는 것과 유사)?
내 코드에는 임시 파일이 삭제되는 곳이 많으며 일부 경우 이러한 임시 파일은 삭제되지 않습니다.삭제되지 않은 파일을 만든 사람 찾기
Java에서 파일을 만들었지 만 삭제되지 않은 방법을 찾을 수 있습니까 (C++
에서 메모리 누수를 발견하는 것과 유사)?
File 클래스를 재정 의하여 열려있는 파일을 세트에 추가하고 삭제할 때 파일을 제거 할 수 있습니다. 그렇게하면 특정 지점에서 어떤 파일이 열리는 지 확인할 수 있습니다. 그것이 당신이 찾고있는 것이 확실하지 않습니다.
그리고 나서 전체 코드 기반을 검색하여 원시 File 클래스가 사용되지 않도록하십시오. –
동의합니다.하지만 동의해야합니다. – AppX
작동 할 수도 있지만 move/copy를 사용하여 파일을 만들 경우에도 여전히 문제가됩니다. –
"꽤"해결책은 아니지만 사용자 정의 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 액세스와 함께 작동합니다.
내가 아는 것은 아닙니다. IntelliJ와 같은 IDE를 사용해 코드의 지시선 전체를 검색하십시오. – duffymo
'File' 클래스의'delete()'를 사용하여 코드 내에서 파일을 삭제하고 있습니까? – SudoRahul
예,하지만 일부 장소를 그리워하는 것 같습니다. 새 파일이 300 번 이상 있습니다. (문제가되는 곳을 찾기가 어려울 수 있습니다.) –