如何在Java中删除或修剪文本文件中的行? 这是我的程序,但它不起作用。 我想删除文本文件中的一行,一行包含用户输入的单词
try {
File inputFile = new File("temp.txt");
File tempFile = new File("temp1.txt");
BufferedReader reader = new BufferedReader(new FileReader(inputFile));
BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
String lineToRemove = name;
String currentLine;
while((currentLine = reader.readLine()) != null)
{
//trim newline when comparing with lineToRemove
String trimmedLine = currentLine.trim();
if(!trimmedLine.startsWith(lineToRemove))
{
// if current line not start with lineToRemove then write to file
writer.write(currentLine);
}
}
writer.close();
reader.close();
}
catch(IOException ex)
{
System.out.println("Error reading to file '" + fileName + "'");
}
答案 0 :(得分:1)
您没有使用换行符分隔行,因此生成的文件将只有一个长行。解决这个问题的一种可能方法是在每一行之后写行分隔符。
另一个可能的问题是,您只检查当前行是否以给定字符串开头。如果您想检查行是否包含字符串,您应该使用contains
方法。
第三个问题是你没有编写修剪过的线,而是按原样编写线。你真的没有说出你对程序的期望,但是如果你应该输出修剪过的线,它应该是这样的:
if(!trimmedLine.contains(lineToRemove)) {
writer.write(trimmedLine);
writer.newLine();
}
答案 1 :(得分:0)
startsWith()
是罪魁祸首。您正在检查该行是否以“lineToRemove”开头。正如@Joni建议使用contains。