使用java.BufferedReader删除文本文件中的一行

时间:2013-10-30 19:40:02

标签: java

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

    }

2 个答案:

答案 0 :(得分:1)

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

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

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

        if(!trimmedLine.contains(lineToRemove)) {
            writer.write(trimmedLine);
            writer.newLine();
        }

答案 1 :(得分:0)

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