0

我有以下代码,创建一个临时文件并读取并删除该文件。但删除后也有文件可供阅读。请帮助找出我的代码错误....

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 .......
4

2 回答 2

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.
于 2013-01-20T04:23:52.103 回答
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();
    }

  }
于 2013-01-20T04:25:26.213 回答