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