Requisito previo: PrintWriter , BufferedReader
Dado un archivo input.txt. Nuestra tarea es eliminar las líneas duplicadas y guardar la salida en un archivo, digamos output.txt
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 output.txt 3.3 Run a loop for each line of output.txt -> If line of output.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 -> Flush PrintWriter stream 5. Close resources.
Para ejecutar con éxito el siguiente programa, input.txt debe salir en la misma carpeta O proporcionar la ruta completa.
// Java program to remove // duplicates from input.txt and // save output to output.txt 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 output.txt BufferedReader br2 = new BufferedReader(new FileReader("output.txt")); String line2 = br2.readLine(); // loop for each line of output.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); // flushing is important here pw.flush(); } line1 = br1.readLine(); } // 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 input.txt. Como el conjunto ignora los valores duplicados, por lo tanto, al almacenar una línea, verifique si ya está presente en el hashset. Escríbalo en output.txt solo si no está presente en hashset.
Para ejecutar con éxito el siguiente programa, input.txt debe salir en la misma carpeta O proporcionar la ruta completa para ellos.
// Efficient Java program to remove // duplicates from input.txt and // save output to output.txt 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 input.txt BufferedReader br = new BufferedReader(new FileReader("input.txt")); String line = br.readLine(); // set store unique values HashSet<String> hs = new HashSet<String>(); // loop for each line of input.txt while(line != null) { // write only if not // present in hashset if(hs.add(line)) pw.println(line); line = br.readLine(); } pw.flush(); // closing resources br.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