gpt4 book ai didi

java - 我想打开一个文本文件并在 java 中编辑特定行

转载 作者:行者123 更新时间:2023-12-03 23:14:46 25 4
gpt4 key购买 nike

这是我编写的代码,而不是编辑特定行,最后添加了新名称...请帮帮我....

PrintWriter writer = new PrintWriter(new BufferedWriter(
new FileWriter("d:\\book.txt", true)));

BufferedReader br = null;
FileReader reader = null;
try {
reader = new FileReader("d:\\book.txt");
br = new BufferedReader(reader);
String line;
System.out.println((";;;;;;;;;;;;;;;;" + request
.getParameter("hname")));
System.out.println(request.getParameter("book"));
while ((line = br.readLine()) != null) {

if (request.getParameter("hname").equals(line)) {
line = line.replace(request.getParameter("hname"),
request.getParameter("book"));

writer.println(line);

writer.close();
}
}

} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
reader.close();

}

最佳答案

除非您不更改行的(字节)长度,否则您需要重写整个文件,在适当的地方添加更改的行。这实际上只是对当前代码的简单更改。首先,在没有 append 的情况下初始化你的 FileWriter(因为你只想追加到文件的末尾,这就是你想要的现在正在做)。

PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("d:\\book.txt")));

然后,要么将整个文件读入内存(如果文件足够小),要么随手写一个临时文件,然后在完成后将其复制过来。第二种方式更健壮,并且需要更少的代码更改;只需修改您的 while 循环以写入每一行,无论修改与否。

// Open a temporary file to write to.
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("d:\\book.temp")));

// ... then inside your loop ...

while ((line = br.readLine()) != null) {
if (request.getParameter("hname").equals(line)) {
line = line.replace(request.getParameter("hname"),
request.getParameter("book"));
}
// Always write the line, whether you changed it or not.
writer.println(line);
}

// ... and finally ...

File realName = new File("d:\\book.txt");
realName.delete(); // remove the old file
new File("d:\\book.temp").renameTo(realName); // Rename temp file

完成后不要忘记关闭所有文件句柄!

关于java - 我想打开一个文本文件并在 java 中编辑特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com