Search code examples
javafileediting

Find a line in a file and remove it


I'm looking for a small code snippet that will find a line in file and remove that line (not content but line) but could not find. So for example I have in a file following:

myFile.txt:

aaa
bbb
ccc
ddd

Need to have a function like this: public void removeLine(String lineContent), and if I pass removeLine("bbb"), I get file like this:

myFile.txt:

aaa
ccc
ddd

Solution

  • This solution may not be optimal or pretty, but it works. It reads in an input file line by line, writing each line out to a temporary output file. Whenever it encounters a line that matches what you are looking for, it skips writing that one out. It then renames the output file. I have omitted error handling, closing of readers/writers, etc. from the example. I also assume there is no leading or trailing whitespace in the line you are looking for. Change the code around trim() as needed so you can find a match.

    File inputFile = new File("myFile.txt");
    File tempFile = new File("myTempFile.txt");
    
    BufferedReader reader = new BufferedReader(new FileReader(inputFile));
    BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile));
    
    String lineToRemove = "bbb";
    String currentLine;
    
    while((currentLine = reader.readLine()) != null) {
        // trim newline when comparing with lineToRemove
        String trimmedLine = currentLine.trim();
        if(trimmedLine.equals(lineToRemove)) continue;
        writer.write(currentLine + System.getProperty("line.separator"));
    }
    writer.close(); 
    reader.close(); 
    boolean successful = tempFile.renameTo(inputFile);