2012-06-11 4 views
0

일부 파일이 들어있는 디렉토리를 삭제해야합니다. 나는 다음과 같은 코드를 사용하고 있습니다 : 어떤 이유파일 # 삭제하지 않는 파일 삭제

public static void delete(File f) { 
    if (f.isDirectory()) { 
    for (File c : f.listFiles()) { 
     delete(c); 
    } 
    } 
    f.setWritable(true); 
    f.delete(); 
} 

, 디렉토리 내부의 파일을, 따라서 디렉토리는 삭제되지 않습니다. 이 문제의 가능한 원인은 무엇이며 어떻게이 문제를 해결할 수 있습니까?

+0

다른 프로세스 또는 사용자가 사용하거나 잠글 수 있습니다. 또는 단순히 권리를 보유하지 않을 수도 있습니다. –

+0

문제가 해결 되었습니까? –

+0

나는 [this thread] (http://stackoverflow.com/questions/991489/i-cant-delete-a-file-in-java)에 제안 된대로'System.gc()'를 호출했고, 작동했다. – missingfaktor

답변

1

디렉토리에 대한 쓰기 권한이 있다고 가정하면 파일이 열려있을 수 있습니다. 제대로 닫히지 않은 파일을 삭제하려고하면 이상한 삭제 오류가 발생합니다. 프로그램이 존재하면 파일을 삭제할 수 있음을 알게됩니다.

+0

해당 파일이 열려 있지 않을 수 있습니다. 그랜드 할아버지가 있습니다. 그러나 그것이 문제가되어야하는지 나는 모른다. – missingfaktor

+0

나는 [이 스레드] (http://stackoverflow.com/questions/991489/i-cant-delete-a-file-in-java)에 제안 된대로'System.gc()'를 호출하고 작동했습니다. – missingfaktor

+0

이것은 닫히지 않고 버려진 파일이 있음을 의미합니다. 해결책은 파일이 'finally'블록에서 항상 닫혀 있는지 확인하여 예외가 발생해도 닫힐 수 있도록하는 것입니다. 또는 Java 7의 ARM을 사용하십시오. –