用Java删除临时文件

时间:2013-01-20 04:20:13

标签: java

我有以下代码,创建一个Temp文件并读取并删除该文件。 但删除后也可以读取文件。请帮我找错我的代码....

public static void main(String args[]) throws Exception
    {                   
        Calendar mSec = Calendar.getInstance();
        String fileName="hubname_"+"msgname_"+mSec.getTimeInMillis();
        String str ="Hello How are you doing .......";
        System.out.println("fileName :"+fileName);

        File f = File.createTempFile(fileName, ".xml");
        FileWriter fw = new FileWriter(f);
        fw.write(str);
        fw.flush();
        fw.close();

        printFileContent(f);
        f.delete();
        printFileContent(f);

    }
  public static void printFileContent(File f)throws Exception
  {
      BufferedReader reader = new BufferedReader( new FileReader(f));
      String         line = null;
      StringBuilder  stringBuilder = new StringBuilder();
      String         ls = System.getProperty("line.separator");

      while( ( line = reader.readLine() ) != null ) {
          stringBuilder.append( line );
          stringBuilder.append( ls );
      }

      System.out.println("stringBuilder.toString() :"+stringBuilder.toString());
  }

输出

fileName :hubname_msgname_1358655424194
stringBuilder.toString() :Hello How are you doing .......

stringBuilder.toString() :Hello How are you doing .......

2 个答案:

答案 0 :(得分:3)

您应该在printFileContent中关闭阅读器。 File.delete无法删除已打开的文件(至少在Windows上,请参阅下面的Keith Randall的评论),在这种情况下,它返回false。您可以检查删除是否成功

if (!f.delete()) {
    throw new IOException("Cannot delete " + f);
}

以下评论已添加到Java 7中的File.delete API

Note that the Files class defines the delete method to throw an IOException when a file cannot be deleted. This is useful for error reporting and to diagnose why a file cannot be deleted.

答案 1 :(得分:1)

public static void printFileContent(File f)throws Exception
  {
      BufferedReader reader = new BufferedReader( new FileReader(f));
      String         line = null;
      StringBuilder  stringBuilder = new StringBuilder();
      String         ls = System.getProperty("line.separator");

      while( ( line = reader.readLine() ) != null ) {
          stringBuilder.append( line );
          stringBuilder.append( ls );
      }

      System.out.println("stringBuilder.toString() :"+stringBuilder.toString()); 

   if(reader != null){
     reader.close();
    }

  }