import java.io.*;
class FileTest{
  public static void main(String [] args) throws Exception{
   File f=new File("1.txt");
   f.createNewFile();
   f.deleteOnExit();
   Thread.sleep(30000);/*这句代码,我想应该是Thread.sleep(3000);再f.deleteOnExit();而不是现在这样,怎么成了现在这种先脱出再睡眠三秒钟呢????*/
   
 
   
  }
}
 请大家帮我看看那个问题……

解决方案 »

  1.   

    我再补充下:教材中说“调用这个方法f.deleteOnExit();后,让线程休眠下”
     怎么回事呢???
      

  2.   

    你想问什么?它的意思应该是30秒之后退出,给你时间让你亲眼看到这个file被删除吧
    如果线程不sleep的话,可能你还没看到效果,程序就已经执行完毕了
      

  3.   

    楼上说的对,deleteonexit()是退出时删除,它给你30秒时间我估计是怕给你3秒你还没找到那个文件它就删完了!
      

  4.   

    deleteOnExit
    public void deleteOnExit()在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。仅在虚拟机正常终止时,才会试图执行删除操作,这在 Java Language Specification 中已定义。 
    一旦已经请求执行删除操作,就无法取消该请求。所以应小心使用此方法。 注:此方法不应 用于文件锁定,因为所得到的协议可能无法可靠地工作。应该使用 FileLock 设施替代。 
    抛出: 
    SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒绝对文件进行删除访问
    从以下版本开始: 
    1.2 
    另请参见:
    delete()