我需要帮助删除然后在Java编程中重命名文件。我的问题是原始文件无法删除,第二个文件无法重命名。这是代码段。任何建议都将不胜感激。
import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
public void deleteLine(String content) {
try {
File inFile = new File("football.dat");
if (!inFile.isFile()) {
System.out.println("Parameter is not an existing file");
return;
}
File tempFile = new File(inFile.getAbsolutePath() + "2");
BufferedReader br = new BufferedReader(new FileReader(inFile));
PrintWriter pw = new PrintWriter(new FileWriter(tempFile), true);
String linetobeempty = null;
while ((linetobeempty = br.readLine()) != null) {
if (!linetobeempty.trim().equals(content)) {
pw.println(linetobeempty);
pw.flush(); System.out.println(linetobeempty);
}
}
pw.close();
br.close();
boolean b = inFile.delete();
if (!b) {
System.out.println("Could not delete file");
return;
}
//Rename the new file to the filename the original file had.
if (!tempFile.renameTo(inFile)) {
System.out.println("Could not rename file");
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
答案 0 :(得分:1)
此代码段中没有任何内容可能是文件未被删除的直接原因。问题在于更深层次 - 权限,由其他进程打开,通常的东西。检查一切。当然,删除失败后重命名失败的原因很明显,所以目前只有一个问题你知道。
答案 1 :(得分:1)
你在Windows上吗?在Windows上,如果任何进程在文件上有文件句柄(与UNIX不同),则取消链接和重命名将失败。我甚至注意到,有时你需要在编写文件之间让操作系统中断,并在用Java进行文件I / O测试时将其删除。 renameTo and delete上的文档提供了一些有限的见解。
为了简化您的问题并更好地调试它,只需创建文件而不是写入文件 - 使用File.createNewFile()。
您可能遇到与Cannot delete file Java相同的问题。