Este ejemplo muestra cómo eliminar una línea de un archivo.
El removeLineFromFile método toma dos parámetros, el primer parámetro es el archivo a quitar de y el segundo parámetro es el contenido de la línea de quitar.
Un tempfile se crea y por escrito a, excepto por el contenido que coincide con el segundo parámetro.
De esta manera los archivos de gran tamaño puede ser manejado sin exigir tanta cantidad de memoria interna.
El archivo original se elimina y el archivo temporario se cambia el nombre al nombre del archivo original.
Por ejemplo, el archivo test.txt se encuentra en el directorio actual y contiene tres líneas, y vamos a eliminar la segunda línea "bbbbb".
El removeLineFromFile método toma dos parámetros, el primer parámetro es el archivo a quitar de y el segundo parámetro es el contenido de la línea de quitar.
Un tempfile se crea y por escrito a, excepto por el contenido que coincide con el segundo parámetro.
De esta manera los archivos de gran tamaño puede ser manejado sin exigir tanta cantidad de memoria interna.
El archivo original se elimina y el archivo temporario se cambia el nombre al nombre del archivo original.
Por ejemplo, el archivo test.txt se encuentra en el directorio actual y contiene tres líneas, y vamos a eliminar la segunda línea "bbbbb".
aaaaa
bbbbb
ccccc
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");
}
}
El archivo test.txt ahora se ve así:
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");
}
}
El archivo test.txt ahora se ve así:
aaaaa
ccccc
ccccc