java 删除file_java.io.File的一个神奇的删除文件的方法

昨天写了一篇关于java.io.File的文章《java.io.File的两个方法mkdir、mkdirs要怎么使用呢?》,主要是说文件夹创建的两个方法的使用。

25c2933dc55d8c6995892ff330e43976.png

今天再来说一说java.io.File的删除文件的方法。

标题说的是一个神奇的删除文件的方法,但是我们先不着急看神奇的删除文件的方法,先来看看不神奇的删除方法吧。

上不神奇的代码。

4b54618e2c99ed871296c6d3f39e6711.png

不神奇的代码很简单。就是调用File对象的delete方法就可以了。

执行一下文件就会被删除掉了。

这个方法也是我们经常用来删除文件的方法。

那不神奇的删除文件的方法看过了,接下来就是见证神奇的时刻了。

5389bff8a489e1b2240af380d8fd021b.png

就是把delete方法换成了deleteOnExit。还是平平无奇,没看出来什么神奇啊。

可是看到后面还有两行代码呢,恰恰是这两行代码就能看出来神奇了。

执行一下,趁着还没有输出“end”的时候看一下文件。

c325581db4d4b05e293f77b0cef949a5.png

可以看到已经输出了“doing”,说明已经执行了"deleteOnExit"方法了,但是文件还在,没有被删除掉。

那等程序执行完呢。再来看看。

0b61054a5e869e8c5937752f1ebb9562.png

可以看到程序执行完,退出后,文件被删除掉了。

这就是这个“deleteOnExit”的神奇所在了。

这个特点,从方法名也能看出一个大概来,就是在退出的时候删除。

那如果是调用“deleteOnExit”之后,抛出异常了呢,会删除文件吗?

动手验证一下吧。

f6d093a7500687cd4c6d30c48f050abb.png

执行后,抛出异常。观察文件被删除掉了。

说明在调用deleteOnExit之后,抛出异常导致程序退出,一样可以正常删除文件。

那什么情况会导致,调用了deleteOnExit方法之后,但是文件无法删除呢。

下面来再来演示一下。

95a931bc5b98aa86854a708001fea003.png

在调用了deleteOnExit方法,也就是控制台输出“doing”之后,点击图中的“stop”按钮,停止程序。这时候再观察文件,会发现文件依然存在,没有被删除掉。

其实此处的“stop”操作,就相当于linux中的“kill -9”的命令。执行“kill -9”一样会让执行了deleteOnExit方法的文件不会被删除掉。

看到这里,有没有觉得和我之前写的一篇《java的ShutdownHook,让程序交代后事,甚至可以……》很相似呢。有兴趣可以翻阅参考一下呢。

今天这个神奇的方法就介绍完了,可以根据自己的需求去选择使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值