我一直在尝试使用以下代码在java中重命名文本文件。
tempFile.renameTo(inFile)
但是,它似乎没有重命名文件。
我的项目的目的是编辑文本文件中的一行文本 1.首先读取文件并将该行存储为oldLine 2.获取已编辑的行并将其存储为newLine 3.将newLine写入临时文件 4.删除主文件并将临时文件重命名为主文件的名称。
这个重命名功能有替代方法吗?
使用完整代码进行编辑
try {
File inFile = new File("Members.txt");
File tempFile = new File("MembersTemp.txt");
BufferedReader BR = new BufferedReader(new FileReader(inFile));
PrintWriter PW = new PrintWriter(new FileWriter(tempFile));
inFile.setReadable(true);
inFile.setWritable(true);
tempFile.setReadable(true);
tempFile.setWritable(true);
String line = null;
while ((line = BR.readLine()) != null) {
if (!old.equals(newLine)) {
//String replace = old.replace(old, newLine);
PW.println(newLine);
PW.flush();
}
}
PW.close();
BR.close();
if (!tempFile.renameTo(inFile)) {
JOptionPane.showMessageDialog(
null,
"Error",
"Edit File",
JOptionPane.WARNING_MESSAGE);
} else {
JOptionPane.showMessageDialog(
null,
"File saved successfully",
"Edit File",
JOptionPane.INFORMATION_MESSAGE);
}
dispose();
new Edit_Member().setVisible(true);
} catch (IOException | HeadlessException e) {
e.printStackTrace();
JOptionPane.showMessageDialog(
null,
"Catch Error",
"Edit File",
JOptionPane.WARNING_MESSAGE);
}
已更新为Files.move
Path source = tempFile.toPath();
Path newdir = inFile.toPath();
Files.move(source, newdir, REPLACE_EXISTING);
上面的代码给出了以下错误:
java.nio.file.FileSystemException:Members.txt:进程无法访问该文件,因为它正由另一个进程使用。
我以为我关闭了所有的读者和作家,所以这个错误真的不应该存在。