文件删除的一个不常见的Bug----deleteOnExit方法的问题

文件删除的一个不常见的Bug

  • 今天遇到一个蛋疼的问题,重新启动SpringBoot的时候,会自动删除我项目里面一个文件夹下的文件,令我百思不得姐。最后,通过各种尝试,终于找到原因了,原来是deleteOnExit()方法的问题,非常小,但是必须引起我们的重视。否则将会面临“灭顶之灾”。详细过程如下:

  • 这个是我部分代码,红线框住的地方就是问题之所在。
    文件删除的一个不常见的Bug----deleteOnExit方法的问题

  • 在这里,我虽然每次都能生成文件,文件的内容格式也是正确的(因为deleteOnExit 方法不会立即删除文件,所以每次你还能看到生成后的文件),但是重启后没有了。查了资料才知道
    deleteOnExit()方法:

当调用deleteOnExit()方法时,只是相当于对deleteOnExit()作一个声明,当程序运行结束,JVM终止时才真正调用deleteOnExit()方法实现删除操作。即该方法是将删除的命令缓存了一下,到服务停止的时候再进行操作!

怎么理解呢,就是我虽然要删除你,但是我先记住,等虚拟机挂了的时候我再去解决你。

  • 真的很蛋疼,这个方法之前我还以为是“存在则删除,不存在则 不删除”,谁知道现在才知道是这么一回事,基础还是不牢固啊!