1

如何在 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 + "'");

    }
4

2 回答 2

1

您没有用换行符分隔行,因此生成的文件将只有一个长行。解决此问题的一种可能方法是在每行之后写入行分隔符。

另一个可能的问题是您只检查当前行是否以给定字符串开头。如果要检查该行是否包含字符串,则应使用该contains方法。

第三个问题是您不是在写修剪过的线,而是按原样写线。你真的没有说出你对程序的期望,但如果你应该输出修剪过的行,它应该看起来像这样:

        if(!trimmedLine.contains(lineToRemove)) {
            writer.write(trimmedLine);
            writer.newLine();
        }
于 2013-10-30T20:17:56.363 回答
0

startsWith()是罪魁祸首。您正在检查该行是否以“lineToRemove”开头。正如@Joni 建议的使用包含。

于 2013-10-30T20:35:13.230 回答