f.deleteOnExit(); 这方法不需要对象吗?
import java.io.*;
class Test
{
public static void main(String[] args) throws Exception
{
for(int i=0;i <5;i++)
{
File f=File.createTempFile( "unhappyless ", ".bmp ");
f.deleteOnExit(); //对象的生存期只在 for 循环内,第二次循环时第一次生成的对象引用不就没保存了,那为什么 JVM 退出时,还能找到该对象,并且执行删除?
}
Thread.sleep(3000);
}
}
------解决方案--------------------系统会记录的
对程序员来说,它是不存在的,但对jvm来说,它可以决定在什么时候回收,你创建过的所有文件都会有记录(如果你指定该文件退出後删除的话)
ps:发错版面了
------解决方案--------------------楼上的不要误导别人
File.createTempFile(String 前缀,String 后缀)
生成一个 "前缀+随机字符串+后缀 "的文件
每次随机字符不一样
循环5次,会生成5个临时文件
------解决方案--------------------我个人觉的createTempFile是在硬盘上创建一个临时文件,它已经在硬盘上写入,而JAVA收回的只是本身的垃圾,而不是硬盘上的
------解决方案--------------------JDK 自带的源码
File类:
public void deleteOnExit() {
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkDelete(path);
}
DeleteOnExitHook.add(path);
}
要养成看代码的习惯
------解决方案--------------------redduke1202贴的代码已经说明了问题