19

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

4

7 に答える 7

18

ファイルを削除できない理由はいくつかあります。いくつか例を挙げると、存在しない、空でないディレクトリである、それを使用しているすべてのリソースを閉じていない、プログラムにそうする権限がないなどの可能性があります。

残念ながら、このFile.delete()方法では、その理由についてほとんど情報が得られません。ぶらぶらしてそれを理解するのはほとんどあなた次第です。しかし、良いニュースがあります。Fileそもそも使いたくない。

java.nio.fileJava 7 では、より堅牢なファイル アクセス API である新しいパッケージが導入されました。抽象の概念を提供し、具体的な操作をクラスにPath分離します。特に、削除が失敗する可能性がある理由を説明する明確な例外を発生させるために文書化されているものを提供します。FilesFiles.delete()

PathFiles;を使用します。あなたがしたことをうれしく思います。

于 2015-03-05T05:24:54.630 に答える
16

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

サーバー上のファイルを削除する権限がない可能性があります。権限を確認してください。

f.delete()f.exists()false を返します。これは、ファイルが存在するが削除できないため、削除されなかった/削除できなかったことを意味し、true を返します。

于 2013-03-11T10:45:47.787 に答える
0

ファイルが存在することを意味しますが、Javaプロセスにはそれを削除する権限がありません。そのため、削除関数はfalseを返します

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

于 2013-03-11T10:47:48.997 に答える