gpt4 book ai didi

java - 如何通过id java从文本行中删除一行

转载 作者:行者123 更新时间:2023-12-01 10:14:42 25 4
gpt4 key购买 nike

如何从文本文件java中删除一行?我到处搜索,尽管我找不到删除行的方法。我有文本文件:a.txt

 1, Anaa, 23
4, Mary, 3

以及来自互联网的函数:

public void removeLineFromFile(Long id){
try{
File inputFile = new File(fileName);
File tempFile = new File("C:\\Users\\...myTempFile.txt");

BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

String lineToRemove = Objects.toString(id,null);
String currentLine;

while((currentLine = reader.readLine()) != null) {
// trim newline when comparing with lineToRemove
String trimmedLine = currentLine.trim();
String trimmLine[] = trimmedLine.split(" ");
if(!trimmLine.equals(lineToRemove)) {
writer.write(currentLine + System.getProperty("line.separator"));
}
}
writer.close();
reader.close();
boolean successful = tempFile.renameTo(inputFile);
}catch (IOException e){
e.printStackTrace();
}

}

其中 fileName 是 a.txt 的路径。我必须删除进入 id 的行。这就是我分割 trimmedLine 的原因。在执行结束时,我有 2 个文件,a.txt 和 myTempFile 都具有相同的行(从开始处开始的行)。为什么无法删除?

最佳答案

如果我正确理解你的问题,你想删除 id 与 removeLineFromFile 方法中传递的 id 匹配的行。

要使您的代码正常工作,只需进行少量更改。

要提取 id,您需要使用 ""","

进行拆分

           String trimmLine[] = trimmedLine.split(" |,");

其中 | 是正则表达式 OR 运算符。请参阅Java: use split() with multiple delimiters .

此外,trimmLine 是一个数组,您不能只将 trimmLine 与 lineToRemove 进行比较。您首先需要从 trimmLine 中提取第一部分,即 id。如果您难以理解这一点,我建议您查看 split 方法的工作原理。您可以看看How to split a string in Java .

因此,使用以下命令提取 id,它是数组 trimmLine 的第一个索引:

           String part1 = trimmLine[0];

然后将part1与lineToRemove进行比较。

整个代码如下:

public void removeLineFromFile(Long id){
try{
File inputFile = new File(fileName);
File tempFile = new File("C:\\Users\\...myTempFile.txt");

BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));

String lineToRemove = Objects.toString(id,null);
String currentLine;

while((currentLine = reader.readLine()) != null) {
// trim newline when comparing with lineToRemove
String trimmedLine = currentLine.trim();
String trimmLine[] = trimmedLine.split(" |,");
String part1 = trimmLine[0];

if(!part1.equals(lineToRemove)) {
writer.write(currentLine + System.getProperty("line.separator"));
}
}
writer.close();
reader.close();
boolean successful = tempFile.renameTo(inputFile);
}catch (IOException e){
e.printStackTrace();
}
}

关于java - 如何通过id java从文本行中删除一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35970237/

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