我们需要在file.exists()
之前致电file.delete()
,然后才能删除文件,例如
File file = ...;
if (file.exists()){
file.delete();
}
目前在我们的所有项目中,我们在某个util类中创建一个静态方法来包装此代码。是否有其他方法可以实现相同的目的,因此我们不需要在每个其他项目中复制我们的utils文件。
答案 0 :(得分:79)
从Java 7开始,您可以使用deleteIfExists返回布尔值(或抛出异常),具体取决于文件是否被删除。对于其他文件系统操作,此方法可能不是原子的。此外,如果JVM /其他程序正在使用某个文件,那么在某些操作系统上它将无法将其删除。每个文件都可以通过toPath
方法转换为路径。例如。
File file = ...;
boolean result = Files.deleteIfExists(file.toPath()); //surround it in try catch block
答案 1 :(得分:24)
在我的机器上,我可以这样做:
file.delete()
如果文件不存在,则返回false。
答案 2 :(得分:7)
还有Java 7解决方案,使用新的(ish)路径抽象:
Path fileToDeletePath = Paths.get("fileToDelete_jdk7.txt");
Files.delete(fileToDeletePath);
希望这会有所帮助。
答案 3 :(得分:1)
我正在研究这种类型的功能,也许这会让你们中的一些人感兴趣...
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;
}
答案 4 :(得分:1)
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();
}
答案 5 :(得分:0)
这是我的解决方案:
File f = new File("file.txt");
if(f.exists() && !f.isDirectory()) {
f.delete();
}
答案 6 :(得分:0)
使用以下语句删除任何文件:
FileUtils.forceDelete(FilePath);
注意:如果要使用,请使用exception handling
代码。
答案 7 :(得分:0)
Apache Commons IO的FileUtils提供了FileUtils.deleteQuietly
:
删除文件,从不抛出异常。如果file是目录,请删除它和所有子目录。 File.delete()和此方法之间的区别是:
- 要删除的目录不必为空。
- 无法删除文件或目录时,不会引发异常。
这提供了一个单线删除呼叫,如果文件删除失败,它不会抱怨:
FileUtils.deleteQuietly(new File("test.txt"));
答案 8 :(得分:0)
使用Apache Commons FileUtils.deleteDirectory()或 FileUtils.forceDelete()记录发生任何故障的异常,
或 FileUtils.deleteQuietly()(如果您不担心引发异常)。
答案 9 :(得分:0)
如果您的项目中的文件位于上传目录中。可以使用下面的代码。
Path root = Paths.get("uploads");
File existingFile = new File(this.root.resolve("img.png").toUri());
if (existingFile.exists() && existingFile.isFile()) {
existingFile.delete();
}
OR
如果位于其他目录中,则可以使用此解决方案。
File existingFile = new File("D:\\<path>\\img.png");
if (existingFile.exists() && existingFile.isFile()) {
existingFile.delete();
}
答案 10 :(得分:0)
通常我们创建文件对象并检查文件是否存在然后删除。
File f1 = new File("answer.txt");
if(f1.exists()) {
f1.delete();
}
或
File f2 = new File("answer.txt");
f2.deleteOnExit();
如果您使用的是 Apache Common,那么下面是您可以删除文件和目录的选项
File f3 = new File("answer.txt");
FileUtils.deleteDirectory(f3);
这个方法会在任何失败的情况下抛出异常。
或
File f4 = new File("answer.txt");
FileUtils.deleteQuietly(f4);
此方法不会抛出任何异常。