zoukankan      html  css  js  c++  java
  • file.deleteOnExit()与file.delete()的区别

    之前踩过一个坑,下载过的文件在我第二次打开app的时候奇迹的找不到了。难道是没有下载成功?为此我特地查看了我的本地文件路径的目录。事实证明文件的确是下载到了本地路径下,但是第二次进入app的时候,路径下的文件自动删除了。但是我并没有涉及到这方面的逻辑啊,之后我把问题定位到file.deletOnExit()的上面,换成通常用的file.delete(),果然问题解决了。

    那么这两种写法:

    1、if(file.exists()) file.deleteOnExit();

    2、if(file.exists()) file.delete();

    的区别在哪?

    当调用delete()方法时,直接删除文件,不管该文件是否存在,一经调用立即执行;

    当调用deleteOnExit()方法时,只是相当于对deleteOnExit()作一个声明,当程序运行结束,JVM终止时才真正调用

    举个例子:

    File file=newFile(FilePath,"a.txt");

    if(file.exists()){               

              file.deleteOnExit();  //    file.delete();       

              file.createNewFile();      }

    当使用的是file.delete(),我们本地路径下是存在a.txt的,代码走的流程是,判断文件是否存在,如果存在则删除,然后再创建文件a.txt

    当使用的是file.deleteOnExit(),我们的本地路径下第一次是存在a.txt的,当我退出app时,a.txt就会删除。代码走的流程是,判断文件是否存在,申明如果存在就要删除此文件(但是并不会立即执行,等到程序结束时才真正运行),创建a.txt,这时候本地就会存在a.txt,当我退出app时,声明代码就会执行删除命令,所以当我第二次打开app时a.txt就不见了。通常用在临时文件的删除。像我们用在下载apk就可以使用这种删除方法,毕竟apk下载完成之后通常就会执行立即安装,这时安装包就没有什么用了。



    转自:https://www.jianshu.com/p/86d475d56c7a
  • 相关阅读:
    实现用户注册验证码
    自带的打印预览
    分页存储过程
    文章标题、内容、摘要的处理函数
    ASP常用函数收藏
    生活中的经典感人语句
    如何在某一数据库的所有表的所有列上搜索一个字符串?
    如何访问隐藏的列表 workflow history list
    Windows Server 2008下如果什么操作没能正常完成, 请尝试run as administrator
    Visual Studio Build Marcos
  • 原文地址:https://www.cnblogs.com/zt007/p/12562260.html
Copyright © 2011-2022 走看看