2013-03-11 25 views
14

javaコードからtomcatサーバーconf/Catalina/localhostにあるファイルを削除しようとすると、file.delete()は常にfalseを返します。しかし、file.exists()関数でファイルをチェックしている場合、trueを返します。私は例外を取得していません。なぜこれが起こっているのかお手伝いください。これに対する解決策は何ですか?Javaのfile.delete()はfalseを返しますが、file.exists()はtrueを返します

+6

file.delete()がfalseを返した場合、削除されていないことを意味します。したがって、file.exists()はtrueを返します。何も間違っていません – rajesh

+3

ファイルのアクセス許可を確認してください。 – m0skit0

+0

ファイルは存在しますが、削除することはできません。それで全部です。 – Ingo

答えて

14

私はfile.deleteその後、JavaコードからのTomcatサーバー confに/カタリナ/ localhostの中に存在しているファイルを削除しようとしています()は常に はfalseを返します。しかし、私がfile.exists()関数でファイルをチェックしている場合、 はtrueを返します。

ほとんどの場合、あなたは、サーバー上のファイルを削除するための許可を持っていません。権限を確認してください。

f.delete()がfalseを返した場合は、削除できない/削除できなかったことを意味し、f.exists()がtrueを返してファイルは存在しますが、削除できません。 falseを返している原因削除機能

+1

私は完全にサーバーのアクセス許可を持っています。私は同じファイルを削除しようとしているときにいつの間にかファイルが削除されたが、最大時間は削除できず、関数はfalseを返します。 – vishal

+0

@vishalうまく動かないときはしません。 – Sajmon

+0

この問題の解決に役立つ他の方法やライブラリがありますか?コードを使用してファイルを削除する必要があるためです。 – vishal

0

それは、ファイルが存在していることを意味するが、あなたのJavaプロセスがthat.Thatがある削除する権限を持っていけない理由の任意の数があります

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()を提供します。

PathおよびFiles;あなたはあなたがうれしいでしょう。

2

ストリームを削除してから削除する必要があります。

例えば -

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

ディレクトリは、File.delete()メソッドはエラーをスローせずにfalseを返します空でない場合。

削除する前に、ディレクトリをクリーンアップする必要があります。

関連する問題