Thursday, February 14, 2008

how to remove a line from a text file

This example shows how to delete a line from a file. The method removeLineFromFile takes two parameters, the first parameter is the file to remove from and the second parameter is the content of the line to remove. A tempfile is created and written to, except for the content that matches the second parameter. This way very large files can be handled without demanding so much internal memory. The original file is then deleted and the tempfile is renamed to the original filename. For example, the file test.txt is located in the current directory and contains three lines, and we will remove the second line "bbbbb".


aaaaa
bbbbb
ccccc
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;

public class FileUtil {


 public void removeLineFromFile(String file, String lineToRemove) {

   try {

     File inFile = new File(file);
    
     if (!inFile.isFile()) {
       System.out.println("Parameter is not an existing file");
       return;
     }
     
     //Construct the new file that will later be renamed to the original filename.
     File tempFile = new File(inFile.getAbsolutePath() + ".tmp");
    
     BufferedReader br = new BufferedReader(new FileReader(file));
     PrintWriter pw = new PrintWriter(new FileWriter(tempFile));
    
     String line = null;

     //Read from the original file and write to the new
     //unless content matches data to be removed.
     while ((line = br.readLine()) != null) {
      
       if (!line.trim().equals(lineToRemove)) {

         pw.println(line);
         pw.flush();
       }
     }
     pw.close();
     br.close();
    
     //Delete the original file
     if (!inFile.delete()) {
       System.out.println("Could not delete file");
       return;
     }
    
     //Rename the new file to the filename the original file had.
     if (!tempFile.renameTo(inFile))
       System.out.println("Could not rename file");
    
   }
   catch (FileNotFoundException ex) {
     ex.printStackTrace();
   }
   catch (IOException ex) {
     ex.printStackTrace();
   }
 }

 public static void main(String[] args) {
   FileUtil util = new FileUtil();
   util.removeLineFromFile("test.txt", "bbbbb");
 }
}
The file test.txt now looks like this:

aaaaa
ccccc
 
Blogger Template Layout Design by [ METAMUSE ] : Code Name Gadget 1.1 Power By freecode-frecode.blogger.com & blogger.com Programming Blogs - BlogCatalog Blog Directory