Java删除文件(如果存在)的更好方法
我们需要先在file.delete()之前致电file.exists(),然后才能删除文件,例如
File file = ...;
if (file.exists()){
file.delete();
}
当前,在我们所有的项目中,我们都在一些util类中创建一个静态方法来包装此代码。 是否有其他方法可以实现相同目的,因此我们不需要在其他所有项目中复制utils文件。
Michal Chmi asked 2020-07-30T02:16:32Z
8个解决方案
80 votes
从Java 7开始,可以使用deleteIfExists返回一个布尔值(或引发Exception),具体取决于是否删除了文件。 对于其他文件系统操作,此方法可能不是原子的。 此外,如果JVM /其他程序正在使用文件,则在某些操作系统上它将无法删除该文件。 每个文件都可以通过toPath方法转换为路径。 例如。
File file = ...;
boolean result = Files.deleteIfExists(file.toPath()); //surround it in try catch block
sol4me answered 2020-07-30T02:16:49Z
25 votes
在我的机器上,我可以执行以下操作:
file.delete()
如果文件不存在,它将返回false。
Martijn Courteaux answered 2020-07-30T02:17:13Z
8 votes
还有Java 7解决方案,使用新的(ish)Path抽象:
Path fileToDeletePath = Paths.get("fileToDelete_jdk7.txt");
Files.delete(fileToDeletePath);
希望这可以帮助。
Eugen answered 2020-07-30T02:17:38Z
1 votes
我正在从事此类功能,也许这会使您中的一些人感兴趣...
public boolean deleteFile(File file) throws IOException {
if (file != null) {
if (file.isDirectory()) {
File[] files = file.listFiles();
for (File f: files) {
deleteFile(f);
}
}
return Files.deleteIfExists(file.toPath());
}
return false;
}
everblack answered 2020-07-30T02:17:58Z
0 votes
使用以下语句删除任何文件:
FileUtils.forceDelete(FilePath);
注意:如果要使用,请使用exception handling代码。
RANA DINESH answered 2020-07-30T02:18:22Z
0 votes
Apache Commons IO的FileUtils提供FileUtils.deleteQuietly:
删除文件,永不引发异常。 如果file是目录,请删除它和所有子目录。 File.delete()和此方法之间的区别是:
要删除的目录不必为空。
无法删除文件或目录时,不会引发任何异常。
这提供了一个单行删除调用,如果文件删除失败,它不会发出投诉:
FileUtils.deleteQuietly(new File("test.txt"));
S Williams answered 2020-07-30T02:19:00Z
-1 votes
这是我的解决方案:
File f = new File("file.txt");
if(f.exists() && !f.isDirectory()) {
f.delete();
}
java_joe answered 2020-07-30T02:19:20Z
-1 votes
File xx = new File("filename.txt");
if (xx.exists()) {
System.gc();//Added this part
Thread.sleep(2000);This part gives the Bufferedreaders and the InputStreams time to close Completely
xx.delete();
}
yogesh rajguru answered 2020-07-30T02:19:35Z