java如果文件存在则删除_Java删除文件(如果存在)的更好方法

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值