从文本文件中删除一个字符串

时间:2013-12-14 19:43:09

标签: java file io

这是我从文件中删除字符串的代码。 此代码从生成的临时文件中删除字符串   - 但不要使用编辑的临时文件替换原始文件。

原始文件保持不变。编辑发生在临时文件中,不会重命名为原始文件

 try{
    File inFile = new File("ext.txt");

  if (!inFile.isFile()) {
    System.out.println("Parameter is not an existing file");
    return;
  }

  File tempFile = new File(inFile.getAbsolutePath()+".txt");

  BufferedReader br = new BufferedReader(new FileReader(inFile));
  PrintWriter pw = new PrintWriter(new FileWriter(tempFile));

  String line = null;

    while ((line = br.readLine()) != null) {

    if (!line.trim().equals(mystring)) {

      pw.println(line);
      pw.flush();
    }

  }

  pw.close();
  br.close();
   inFile.delete();
   tempFile.renameTo(inFile);

     if (!inFile.delete()) {
    System.out.println("Could not delete file");
    return;
  }

    if (!tempFile.renameTo(inFile))
    System.out.println("Could not rename file");

}
catch (FileNotFoundException ex) {
  ex.printStackTrace();
}
catch (IOException ex) {
  ex.printStackTrace();
} 

1 个答案:

答案 0 :(得分:0)

您的代码运行正常。您需要存储布尔值file.delete和file.rename,并在“if”条件中使用这些值。缺点是,您正在尝试删除并重命名已重命名和删除的同一文件,因此它的if条件失败。尝试做这样的事情:

       boolean isDeleted = inFile.delete();
       boolean isRenamed = tempFile.renameTo(inFile);

         if (!isDeleted) {
        System.out.println("Could not delete file");
        return;
      }

        if (!isRenamed)
        System.out.println("Could not rename file");