这是我从文件中删除字符串的代码。 此代码从生成的临时文件中删除字符串 - 但不要使用编辑的临时文件替换原始文件。
原始文件保持不变。编辑发生在临时文件中,不会重命名为原始文件
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();
}
答案 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");