Lectura y escritura de datos

Iniciado por rubcr, 8 Mayo 2020, 03:33 AM

0 Miembros y 1 Visitante están viendo este tema.

rubcr

Buenas a todos.
Tengo una cuestión sobre un ejemplo de lectura y escritura de datos en java.
Tengo un archivo input.txt con texto y tengo que separar las líneas pares en un archivo .txt y las líneas impares en otro archivo .txt
Como se podría realizar este programa?

Espero que alguien sepa ayudarme.
Un saludo.

rub'n

#1
ressscaaataaaaalaaaaaaa

use Open jdk 11  :-( :-( :-( :-( :-( :-( :-(

Descripción hyper supra breve: recorreremos el fichero y por el condicional, concatenamos las lineas pares en impares, en sus
respectivos StringBuilder, para luego escribirlos en los ficheros de cada quien, se concatena xq de lo contrario se escribiria la ulllltima linea solamente en cada fichero.

* El método write crea los ficheros si no existen, para flojos como yo, y vagos como tu  :silbar:

* la explicación esta 100% mala, llevo dias sin dormir
mas millll ediciones  >:D

Código (java) [Seleccionar]
   private static final Path RUTA_PARES = Path.of("pares.txt");
   private static final Path RUTA_IMPARES = Path.of("impares.txt");


Código (java) [Seleccionar]
public App() {
       readLines("archivo.txt"); //fichero principal
   }

   /**
    * (e % 2) == 0 pares , !=0 impares
    *
    * @param rutaFichero
    */
   private void readLines(final String rutaFichero) {
       try (final Stream<String> lines = Files.lines(Path.of(rutaFichero))) {

           final AtomicReference<Integer> atomicCounter = new AtomicReference<>(1);
           final StringBuilder pares = new StringBuilder();
           final StringBuilder impares = new StringBuilder();

           lines.forEach(linea -> {
               final Integer count = atomicCounter.getAndUpdate(e -> ++e);
               if ((count % 2) == 0) {//pares
                   pares.append(linea);
                   pares.append(System.lineSeparator());
               } else { //IMPARES
                   impares.append(linea);
                   impares.append(System.lineSeparator());
               }
           });
           writer(RUTA_PARES, pares.toString());
           writer(RUTA_IMPARES, impares.toString());
           
       } catch (IOException e) {
           e.printStackTrace();
       }


   }

   private void writer(final Path path, String line) {

       if(!path.toFile().exists()) {
           try {
               Files.createFile(path);
           } catch (IOException e) {
               e.printStackTrace();
           }
       }

       try (final BufferedWriter br = Files.newBufferedWriter(path)) {

           br.write(line);
           br.write(System.lineSeparator());

       } catch (IOException ex) {

       }
   }


rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen