file 调用delete方法删除失败,返回false

原因1:绝大多数都是因为流关闭问题导致的。对文件流操作后要及时关闭。

场景1:

@Test
void testDeleteFile2() throws FileNotFoundException {
    File source = new File("C:\\Users\\HL\\AppData\\Local\\Temp\\test\\test1.jpeg");
    InputStream ins = new FileInputStream(source);
    File target = new File("C:\\Users\\HL\\AppData\\Local\\Temp\\test\\test2.jpeg");
    FileUtil.writeFromStream(ins, target);
    target.delete();
    source.delete();
}

target文件删除能成功

source文件删除失败:原因是 source的文件输入流ins没有关闭。

解决办法:1)显示地关闭流

2)try代码块结束时自动关闭流

File source = new File("C:\\Users\\HL\\AppData\\Local\\Temp\\test\\test1.jpeg");
try (InputStream ins = new FileInputStream(source);) {
    File target = new File("C:\\Users\\HL\\AppData\\Local\\Temp\\test\\test2.jpeg");
    FileUtil.writeFromStream(ins, target);
    target.delete();
} catch (Exception e) {

}
source.delete();

总结:封装的文件(流处理)方法,在方法级别上应该处理流资源的关闭。否则不容易排查问题。

实战:我们有一个FileUtil 根据流获取md5值,没有做流的关闭,导致 文件delete失败。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值