domingo, 6 de septiembre de 2009

Eliminar una línea de un archivo de texto

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".
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");
  }
}


 El archivo test.txt ahora se ve así:
aaaaa
ccccc


10 comentarios:

  1. Disculpa amigo, y si quiero ingresar la linea "ddddd" en donde se encontraba la linea "bbbbb" como lo haria?

    ResponderEliminar
  2. public class VoiceMailServices
    {

    String delimitador = "";
    String ruta = "/etc/asterisk/voicemail_extra.conf";
    String contenido = Util.readFile(ruta);
    Extension objExtension = new Extension();

    public void principal(String accion, String nombre, String callerId, String mailbox)
    {

    switch (Integer.parseInt(accion))
    {
    case 1:
    insertarVoiceMail(nombre, callerId, mailbox);
    break;
    case 2:
    actualizarVoiceMail(nombre, callerId, mailbox);
    break;
    case 3:
    eliminarVoiceMail(nombre, callerId, mailbox);
    break;

    default:
    break;
    }
    }

    public void parametros(String nombre, String callerId, String mailbox)
    {
    if (nombre != null && nombre != "" && nombre != "null")
    objExtension.setNombre(nombre);
    else
    objExtension.setNombre("");

    if (callerId != null && callerId != "" && callerId != "null")
    objExtension.setCallerId(callerId);
    else
    objExtension.setCallerId("");
    if (mailbox != null && mailbox != "" && mailbox != "null")
    objExtension.setMailbox(mailbox);
    else
    objExtension.setMailbox("");
    }

    public void insertarVoiceMail(String nombre, String callerId, String mailbox)
    {
    parametros(nombre, callerId, mailbox );

    String delimitador = "";
    String[] splitContenido = contenido.split(delimitador);

    String column = "";

    column = "<" + objExtension.getNombre() + ">" + "=>";
    column += "<" + objExtension.getNombre() + ">";
    column += "<" + objExtension.getCallerId() + ">";
    column += "<" + objExtension.getMailbox() + ">";
    column += System.getProperty("line.separator");// \r\n

    if (contenido != null && contenido != "")
    {
    column = contenido + column;
    }
    Util.writeFile(column, ruta);
    System.out.println("Registro Ingresado" + splitContenido);

    }

    public void actualizarVoiceMail(String nombre, String callerId, String mailbox)
    {
    parametros(nombre, callerId, mailbox);
    List lineas;

    String lineaArchivoNuevo = "";
    String nuevoescrito = "";
    try
    {

    lineas = Arrays.asList(contenido.split("\r\n"));

    for (int i = 0; i < lineas.size(); i++)
    {
    String lineaActualizar = lineas.get(i).toString();
    if (lineaActualizar.contains(nombre))
    {
    nuevoescrito = "<" + objExtension.getNombre() + ">" + "=>";
    nuevoescrito += "<" + objExtension.getNombre() + ">";
    nuevoescrito += "<" + objExtension.getCallerId() + ">";
    nuevoescrito += "<" + objExtension.getMailbox() + ">";

    lineas.set(i, nuevoescrito);
    break;
    }
    }
    for (int i = 0; i < lineas.size(); i++)
    {
    lineaArchivoNuevo += lineas.get(i).toString() + "\r\n";
    }
    }
    catch (Exception e)
    {
    }
    System.out.println("Actualizado");
    Util.writeFile(lineaArchivoNuevo, ruta);
    }

    public void eliminarVoiceMail(String nombre, String callerId, String mailbox)
    {
    parametros(nombre, callerId, mailbox);

    List lineas;

    String nuevoescrito = "";
    String lineass;
    FileReader fr;
    BufferedReader br;
    try
    {
    fr = new FileReader(ruta);
    br = new BufferedReader(fr);
    lineas = new ArrayList();
    lineas.clear();

    while ((lineass = br.readLine()) != null)
    {
    lineas.add(lineass);

    }
    for (int i = 0; i < lineas.size(); i++)
    {
    if (lineas.get(i).toString().contains(nombre))
    {
    lineas.remove(i);
    }
    }

    for (int i = 0; i < lineas.size(); i++)
    {
    nuevoescrito+=lineas.get(i).toString()+"\r\n";
    }



    System.out.println("Eliminado");
    Util.writeFile(nuevoescrito, ruta);
    }
    catch (Exception e)
    {
    }

    ResponderEliminar
  3. para insertar actualizar y eliminar un registro de un archivo txt funciona al 100%

    ResponderEliminar
  4. public class VoiceMailServices
    {

    String delimitador = "";
    String ruta = "/etc/asterisk/voicemail_extra.conf";
    String contenido = Util.readFile(ruta);
    Extension objExtension = new Extension();

    public void principal(String accion, String nombre, String callerId, String mailbox)
    {

    switch (Integer.parseInt(accion))
    {
    case 1:
    insertarVoiceMail(nombre, callerId, mailbox);
    break;
    case 2:
    actualizarVoiceMail(nombre, callerId, mailbox);
    break;
    case 3:
    eliminarVoiceMail(nombre, callerId, mailbox);
    break;

    default:
    break;
    }
    }

    public void parametros(String nombre, String callerId, String mailbox)
    {
    if (nombre != null && nombre != "" && nombre != "null")
    objExtension.setNombre(nombre);
    else
    objExtension.setNombre("");

    if (callerId != null && callerId != "" && callerId != "null")
    objExtension.setCallerId(callerId);
    else
    objExtension.setCallerId("");
    if (mailbox != null && mailbox != "" && mailbox != "null")
    objExtension.setMailbox(mailbox);
    else
    objExtension.setMailbox("");
    }

    public void insertarVoiceMail(String nombre, String callerId, String mailbox)
    {
    parametros(nombre, callerId, mailbox );

    String delimitador = "";
    String[] splitContenido = contenido.split(delimitador);

    String column = "";

    column = "<" + objExtension.getNombre() + ">" + "=>";
    column += "<" + objExtension.getNombre() + ">";
    column += "<" + objExtension.getCallerId() + ">";
    column += "<" + objExtension.getMailbox() + ">";
    column += System.getProperty("line.separator");// \r\n

    if (contenido != null && contenido != "")
    {
    column = contenido + column;
    }
    Util.writeFile(column, ruta);
    System.out.println("Registro Ingresado" + splitContenido);

    }

    public void actualizarVoiceMail(String nombre, String callerId, String mailbox)
    {
    parametros(nombre, callerId, mailbox);
    List lineas;

    String lineaArchivoNuevo = "";
    String nuevoescrito = "";
    try
    {

    lineas = Arrays.asList(contenido.split("\r\n"));

    for (int i = 0; i < lineas.size(); i++)
    {
    String lineaActualizar = lineas.get(i).toString();
    if (lineaActualizar.contains(nombre))
    {
    nuevoescrito = "<" + objExtension.getNombre() + ">" + "=>";
    nuevoescrito += "<" + objExtension.getNombre() + ">";
    nuevoescrito += "<" + objExtension.getCallerId() + ">";
    nuevoescrito += "<" + objExtension.getMailbox() + ">";

    lineas.set(i, nuevoescrito);
    break;
    }
    }
    for (int i = 0; i < lineas.size(); i++)
    {
    lineaArchivoNuevo += lineas.get(i).toString() + "\r\n";
    }
    }
    catch (Exception e)
    {
    }
    System.out.println("Actualizado");
    Util.writeFile(lineaArchivoNuevo, ruta);
    }

    public void eliminarVoiceMail(String nombre, String callerId, String mailbox)
    {
    parametros(nombre, callerId, mailbox);

    List lineas;

    String nuevoescrito = "";
    String lineass;
    FileReader fr;
    BufferedReader br;
    try
    {
    fr = new FileReader(ruta);
    br = new BufferedReader(fr);
    lineas = new ArrayList();
    lineas.clear();

    while ((lineass = br.readLine()) != null)
    {
    lineas.add(lineass);

    }
    for (int i = 0; i < lineas.size(); i++)
    {
    if (lineas.get(i).toString().contains(nombre))
    {
    lineas.remove(i);
    }
    }

    for (int i = 0; i < lineas.size(); i++)
    {
    nuevoescrito+=lineas.get(i).toString()+"\r\n";
    }



    System.out.println("Eliminado");
    Util.writeFile(nuevoescrito, ruta);
    }
    catch (Exception e)
    {
    }

    ResponderEliminar
    Respuestas
    1. Ing. podria subir el programa en rar? e enviarmelo a mi correo santosjeandx@gmail.com gracias de antemano

      Eliminar
  5. public static void writeFile(String contenido, String ruta)
    {
    try
    {

    File file = new File(ruta);

    // if file doesnt exists, then create it
    if (!file.exists())
    {
    file.createNewFile();
    }
    else
    {
    file.createNewFile();
    }

    FileWriter fw = new FileWriter(file.getAbsoluteFile(), false);
    BufferedWriter bw = new BufferedWriter(fw);
    bw.write(contenido);
    bw.close();

    }
    catch (IOException e)
    {
    System.out.println(e.getMessage());
    }
    }

    public static String readFile(String ruta)
    {
    String contenido = "";

    BufferedReader br = null;
    String line = "";

    try
    {
    br = new BufferedReader(new FileReader(ruta));
    while ((line = br.readLine()) != null)
    {
    contenido += line + System.getProperty("line.separator");
    }
    }
    catch (FileNotFoundException e)
    {
    e.printStackTrace();
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    finally
    {
    if (br != null)
    {
    try
    {
    br.close();
    }
    catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }
    return contenido;
    }

    public static void BorrarFichero(File Ffichero)
    {
    try
    {
    /* Si existe el fichero */
    if (Ffichero.exists())
    {
    /* Borra el fichero */
    Ffichero.delete();
    System.out.println("Fichero Borrado con Exito");
    }
    }
    catch (Exception ex)
    {
    /* Captura un posible error y le imprime en pantalla */
    System.out.println(ex.getMessage());
    }
    }


    public static void eliminarRegistro(String nombreFile, String nombre, String callerId, String mailbox, String secret)
    {
    List lineas;

    String nuevoescrito = "";
    try
    {
    lineas = new ArrayList();
    lineas.clear();

    lineas = Arrays.asList(readFile(nombreFile));

    for (int i = 0; i < lineas.size(); i++)
    {
    String lineaEliminar = lineas.get(i).toString();

    if (lineaEliminar.contains(nombre))
    {
    System.out.println("SI");
    lineas.remove(i);
    break;
    }

    }
    for (int i = 0; i < lineas.size(); i++)
    {
    nuevoescrito += lineas.get(i).toString() + "\r\n";
    }

    writeFile(nuevoescrito, nombreFile);
    }
    catch (Exception e)
    {
    // TODO: handle exception
    }
    }

    ResponderEliminar
    Respuestas
    1. Ing. podria subir el programa en rar? e enviarmelo a mi correo santosjeandx@gmail.com gracias de antemano

      Eliminar
  6. Top-Tier Iron-Titanium Iron-Titanium Parts - TiogaArt
    Titanium Trimmer and Steel-Titanium Parts. These parts come in several samsung galaxy watch 3 titanium sizes and shapes and have titanium white octane blueprint a unique shape: In this article, we ford escape titanium 2021 will use our Aluminum Aluminum Steel Tender, titanium piercings Copper titanium security Nickel Tender,

    ResponderEliminar