2013-03-11 3 views
14

Tomcat 서버 conf/Catalina/localhost에있는 파일을 java 코드에서 삭제하려고하면 file.delete()는 항상 false를 반환합니다. . 그러나 file.exists() 함수로 파일을 검사 할 경우 true를 반환합니다. 나는 어떤 예외도 얻지 않을 것이다. 왜 이런 일이 일어나는지 도와주세요. 이것에 대한 해결책은 무엇입니까?Java file.delete()는 false를 반환하지만 true를 반환합니다.

+6

file.delete()가 false를 반환하면 삭제되지 않았 음을 의미합니다. 따라서 file.exists()는 true를 반환합니다. 아무 것도 잘못되었습니다. – rajesh

+3

파일 사용 권한을 확인하십시오. – m0skit0

+0

파일이 있지만 삭제할 수 없습니다. 그게 다야. – Ingo

답변

14

나는/카탈/localhost를 conf의 자바 코드에서 다음 File.delete를()는 항상 false를 반환 톰캣 서버에 존재하는 파일을 삭제하려고합니다. 그러나 file.exists() 함수에 의해 파일을 검사하는 경우 사실을 반환합니다.

대부분 서버에 파일을 삭제하는 데 허가이 없습니다. 권한을 확인하십시오.

f.delete() false를 반환하면 파일을 삭제할 수 없거나 삭제할 수 없으며 f.exists()이 true를 반환하므로 파일이 있지만 삭제할 수 없습니다. false를 반환하는 이유 삭제 기능

+1

나는 서버에 대한 모든 권한을 가지고있다. 같은 파일을 삭제하려고 할 때 언젠가 파일이 삭제되었지만 삭제할 수없는 최대 시간은 false를 반환합니다. – vishal

+0

@vishal 작동하지 않을 때하지 마십시오. – Sajmon

+0

이 문제를 해결하는 데 도움이되는 다른 방법이나 라이브러리가 있습니까? 코드를 사용하여 파일을 삭제해야하기 때문에. – vishal

0

그것은 파일이 존재하는 것을 의미하지만 자바 프로세스가 저것 좀가 삭제할 수있는 권한이 그나마 이유로 수 있습니다

Returns: true if and only if the file or directory is successfully deleted; false otherwise

+2

그런 다음 Java 프로세스에 파일을 삭제할 권한을 할당하는 방법을 알려주십시오. 어쨌든 코드로 파일을 삭제해야하기 때문에. – vishal

9

왜 파일이 ​​없습니다 삭제되다; 존재하지 않을 수도 있고, 비어 있지 않은 디렉토리 일 수도 있고, 그것을 사용하는 모든 자원을 닫지 않았을 수도 있고, 프로그램이 권한을 갖고 있지 않을 수도 있습니다.

불행히도 File.delete() 방법은 왜 그런지에 대한 정보를 거의 제공하지 않습니다. 주위를 둘러보고 알아내는 것이 당신에게 달려 있습니다. 그러나 좋은 소식이 있습니다. 처음에는 File을 사용하고 싶지 않습니다.

Java 7은 훨씬 강력한 파일 액세스 API 인 새로운 java.nio.file 패키지를 도입했습니다. 요약 Path의 개념을 제공하고 구체적인 작업을 Files 클래스로 구분합니다. 특히 Files.delete()을 제공하며 삭제가 실패 할 수있는 이유를 설명하는 명확한 예외를 제기하기 위해 문서화되어 있습니다.

PathFiles; 당신이 기뻐하실 겁니다.

2

스트림을 삭제하기 전에 닫아야합니다.

예 : -

fileInputStream.close(); 
file.delete(); 
2

디렉토리는 다음 File.delete() 방법은 오류를 throw하지 않고 false를 돌려줍니다 비 비어있는 경우.

삭제하기 전에 디렉터리를 정리해야합니다.

관련 문제