Programa Java para eliminar cierto texto de un archivo

Requisito previo: PrintWriter , BufferedReader

Dados dos archivos input.txt y delete.txt. Nuestra tarea es realizar la extracción de archivos (Input-Delete) y guardar la salida en el archivo, digamos output.txt

Ejemplo :


 

Algoritmo ingenuo:

1. Create PrintWriter object for output.txt
2. Open BufferedReader for input.txt
3. Run a loop for each line of input.txt
   3.1 flag = false
   3.2 Open BufferedReader for delete.txt
   3.3 Run a loop for each line of delete.txt
      ->  If  line of delete.txt is equal to current line of input.txt 
            -> flag = true
            -> break loop

4. Check flag, if false
     -> write current line of input.txt to output.txt
5. Flush PrintWriter stream and close resources.

Para ejecutar con éxito el siguiente programa, input.txt y delete.txt deben salir en la misma carpeta O proporcionar la ruta completa para ellos.

// Java program to perform file
// operation output = input-delete
  
import java.io.*;
  
public class FileOperation
{
    public static void main(String[] args) throws IOException 
    {
        // PrintWriter object for output.txt
        PrintWriter pw = new PrintWriter("output.txt");
          
        // BufferedReader object for input.txt
        BufferedReader br1 = new BufferedReader(new FileReader("input.txt"));
          
        String line1 = br1.readLine();
          
        // loop for each line of input.txt
        while(line1 != null)
        {
            boolean flag = false;
              
            // BufferedReader object for delete.txt
            BufferedReader br2 = new BufferedReader(new FileReader("delete.txt"));
              
            String line2 = br2.readLine();
              
            // loop for each line of delete.txt
            while(line2 != null)
            {
                if(line1.equals(line2))
                {
                    flag = true;
                    break;
                }
                  
                line2 = br2.readLine();
            }
              
            // if flag = false
            // write line of input.txt to output.txt
            if(!flag)
                pw.println(line1);
              
            line1 = br1.readLine();
              
        }
          
        pw.flush();
          
        // closing resources
        br1.close();
        pw.close();
          
        System.out.println("File operation performed successfully");
    }
}

Producción:

File operation performed successfully

Nota: si output.txt existe en cwd (directorio de trabajo actual), el programa anterior lo sobrescribirá; de lo contrario, se creará un nuevo archivo.

Una mejor solución es usar HashSet para almacenar cada línea de delete.txt y luego, mientras recorre las líneas de input.txt, verifique si está en hashset. Si no está presente, escriba esa línea en output.txt.

Para ejecutar con éxito el siguiente programa, input.txt y delete.txt deben salir en la misma carpeta O proporcionar la ruta completa para ellos.

// Efficient Java program to perform file
// operation output = input-delete
  
import java.io.*;
import java.util.HashSet;
  
public class FileOperation
{
    public static void main(String[] args) throws IOException 
    {
        // PrintWriter object for output.txt
        PrintWriter pw = new PrintWriter("output.txt");
          
        // BufferedReader object for delete.txt
        BufferedReader br2 = new BufferedReader(new FileReader("delete.txt"));
          
        String line2 = br2.readLine();
          
        // hashset for storing lines of delete.txt
        HashSet<String> hs = new HashSet<String>();
          
        // loop for each line of delete.txt
        while(line2 != null)
        {
            hs.add(line2);
            line2 = br2.readLine();
        }
                      
        // BufferedReader object for input.txt
        BufferedReader br1 = new BufferedReader(new FileReader("input.txt"));
          
        String line1 = br1.readLine();
          
        // loop for each line of input.txt
        while(line1 != null)
        {
            // if line is not present in delete.txt
            // write it to output.txt
            if(!hs.contains(line1))
                pw.println(line1);
              
            line1 = br1.readLine();
        }
          
        pw.flush();
          
        // closing resources
        br1.close();
        br2.close();
        pw.close();
          
        System.out.println("File operation performed successfully");
    }
}

Producción:

File operation performed successfully

Nota: si output.txt existe en cwd (directorio de trabajo actual), el programa anterior lo sobrescribirá; de lo contrario, se creará un nuevo archivo.

Este artículo es una contribución de Gaurav Miglani . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *