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下载完成之后通常就会执行立即安装,这时安装包就没有什么用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,696评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,185评论 19 139
  • IO流(Input Output) IO技术主要的作用是解决设备与设备之间 的数据传输问题。硬盘 -> 内存内存的...
    奋斗的老王阅读 4,334评论 1 48
  • File类(File类的概述和构造方法) A:File类的概述File更应该叫做一个路径文件路径或者文件夹路径路径...
    厉害了我的彭阅读 705评论 0 3
  • 是柒月呀阅读 193评论 0 0