如何从文本文件java中删除一行? 我到处搜索,即使我找不到删除线路的方法。 我有文本文件:a.txt
wedding.models.Guest
以及从互联网上获取的功能:
1, Anaa, 23
4, Mary, 3
}
其中fileName是a.txt的路径。 我必须删除导致id的行。这就是我拆分trimmedLine的原因。在执行结束时,我有两个文件,a.txt和myTempFile都有相同的行(从开始的那些)。为什么不能删除它?
答案 0 :(得分:1)
如果我理解你的问题,你想删除其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();
}
}