elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Modificacion de un txt
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Modificacion de un txt  (Leído 3,595 veces)
mrojasl

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Modificacion de un txt
« en: 11 Marzo 2015, 00:21 am »

Buen dia:

He iniciado a hacer un pequeño programa para modificar datos dentro de un txt. Hasta ahora solo he conseguido cargar el archivo de texto y recorrer las lineas que tiene el archivo, pero el modificar cada campo aun no. Lo complicado para mi es que el archivo esta separado por tabulaciones, por ejemplo
Citar
1          2          3          4          5

y lo que necesito es que este así:
Citar
0001       0002       0003       0004       0005

osea la idea es llenar espacios vacios por 0 u otro digito.

Por Favor necesito su ayuda.



En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Modificacion de un txt
« Respuesta #1 en: 11 Marzo 2015, 00:55 am »

Lee linea por linea y reemplaza los tabs por ceros. Aquí tendrás que saber cuántos espacios corresponden a un tab en el editor donde se creó el fichero y reemplazarlos con el método replaceAll. Ejemplo:

Código
  1. public void replaceTabsWithZeros(String path) {
  2.    try (
  3. BufferedReader reader = new BufferedReader(new FileReader(path));
  4. BufferedWriter writer = new BufferedWriter(new FileWriter(path))) {
  5.    String line;
  6.    while( (line = reader.readLine()) != null) {
  7.        writer.write(line.replaceAll("    ","0000"));
  8.    }
  9. } catch(IOException ex) {
  10.    throw new RuntimeException("Pro lema al leer archivo: "+ex.getMessage());
  11. }
  12. }

Cualquier error, excúsame, estoy publicando desde mi móvil :xD


« Última modificación: 11 Marzo 2015, 14:40 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
mrojasl

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Modificacion de un txt
« Respuesta #2 en: 11 Marzo 2015, 16:01 pm »

Estimado Gus Garsaky:

Gracias por tu respuesta.

He estado provando el codigo que me propusiste pero lo que me hace es borrar todo el contenido del txt.

Saludos.
En línea

PabloPbl

Desconectado Desconectado

Mensajes: 188


Ver Perfil
Re: Modificacion de un txt
« Respuesta #3 en: 11 Marzo 2015, 18:50 pm »

Modifique un poco el código de Gus y funciona perfectamente para lo que quieres:

Código
  1. package remplace;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.File;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.IOException;
  9.  
  10. public class Remplace {
  11.  
  12.    public Remplace() {
  13.        File file = new File("Archivo.txt");
  14.        if(!(file.exists())) {
  15.            try {
  16.                file.createNewFile();
  17.                System.out.println("Se ha creado el archivo");
  18.            } catch (IOException ex) {
  19.                System.out.println("Se ha producido un problema "+ex.getMessage());
  20.            }
  21.        }
  22.        replaceTabsWithZeros("Archivo.txt");
  23.    }
  24.  
  25.    public void replaceTabsWithZeros(String path) {
  26.    try {
  27.        BufferedReader reader = new BufferedReader(new FileReader(path));
  28.        String TextFinal = "";
  29.        String aux = "";
  30.        while(true) {
  31.            aux = reader.readLine();
  32.            if(aux != null) {
  33.                TextFinal += aux.replaceAll(" ", "0")+"\n";
  34.            }
  35.            else{
  36.                break;
  37.            }
  38.        }
  39.  
  40.        reader.close();
  41.  
  42.        BufferedWriter writer = new BufferedWriter(new FileWriter(path));
  43.        writer.write(TextFinal);
  44.        writer.close();
  45.  
  46.    } catch(IOException ex) {
  47. System.out.println("Se ha producido un problema "+ex.getMessage());
  48.    }
  49. }
  50.  
  51.    public static void main(String[] args) {
  52.        Remplace rem = new Remplace();
  53.    }
  54.  
  55. }

Salu2  ;).
« Última modificación: 11 Marzo 2015, 18:54 pm por PabloPbl » En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Modificacion de un txt
« Respuesta #4 en: 11 Marzo 2015, 19:31 pm »

Sí, fue un error. Lo que pasa es que al cargar el mismo archivo en el BufferedReader nunca leía el archivo porque estaba a la espera de escribir. Aquí te dejo la solución, pero, a la próxima, anda intentado hacerlo tu.

Código
  1. public void replaceTabsWithZeros(File file) {
  2.        if(file.exists()) {
  3.            try (
  4.                 BufferedReader reader = new BufferedReader(new FileReader(file))) {
  5.                List<String> newLines = new ArrayList<>();
  6.                String line = "";
  7.                while( (line = reader.readLine()) != null) {
  8.                    System.out.println("Linea actual:\t"+line);
  9.                    String newLine = line.replaceAll("\t", "0000");
  10.                    System.out.println("Linea formateada: "+newLine);
  11.                    newLines.add(newLine);
  12.                }
  13.                replaceLines(file, newLines);
  14.            } catch(IOException ex) {
  15.                throw new RuntimeException(ex.getMessage());
  16.            }
  17.        }
  18.    }
  19.  
  20.    public void replaceLines(File file, List<String> lines) {
  21.        try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
  22.            for(String line : lines) {
  23.                writer.write(line);
  24.                writer.newLine();
  25.                writer.flush();
  26.            }
  27.        } catch (IOException ex) {
  28.            new RuntimeException(ex.getMessage());
  29.        }
  30.  
  31.    }

Llamas al método replaceTabsWithZeros pasándole un objeto File con la ruta del archivo:

Código
  1. public static void main(String[] args) {
  2.        TabsTest tabTest = new TabsTest();
  3.        tabTest.replaceTabsWithZeros(new File("D://test.txt"));
  4.    }

Ejemplo de salida:

Código:
A0000B0000C0000D0000E
F0000G0000H0000I0000J
K0000L0000M0000N0000O
P0000Q0000R0000S0000T
U0000V0000W0000X0000Y
Z
« Última modificación: 11 Marzo 2015, 19:51 pm por Gus Garsaky » En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
mrojasl

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Modificacion de un txt
« Respuesta #5 en: 11 Marzo 2015, 22:25 pm »

Perfecto Gracias. Ya Pude editarlo ahora solo un ultimo favor.
Como podria insertar un digito en un lugar en especifico de una linea, por ejemplo en la posicion 50.

Saludos,
En línea

Usuario Invitado


Desconectado Desconectado

Mensajes: 625



Ver Perfil
Re: Modificacion de un txt
« Respuesta #6 en: 11 Marzo 2015, 22:47 pm »

Extraes la porción de cadena a cambiar con el método substring(int start, int end), que devuelve un subcadena de una cadena dentro de las posiciones especificadas. Luego lo reemplazas, algo así:

Código
  1. String newLine = line.replaceAll(line.substring(50,60), "Texto a cambiar");
  2. writer.write(line);
En línea

"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein
mrojasl

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Modificacion de un txt
« Respuesta #7 en: 12 Marzo 2015, 17:03 pm »

Ok, Habia dejado este tema tanto tiempo que me habia olvidado de los funciones de texto.

Muchas Gracias Por su ayuda.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Modificacion del BODY
Nivel Web
rokaforever 0 2,524 Último mensaje 11 Abril 2008, 15:18 pm
por rokaforever
modificacion del foro « 1 2 »
Sugerencias y dudas sobre el Foro
krackwar 11 5,164 Último mensaje 2 Mayo 2008, 03:50 am
por ^Winder^
Proyecto de modificación del GTA.
Juegos y Consolas
adrian08 0 3,137 Último mensaje 8 Septiembre 2017, 13:58 pm
por adrian08
Modificacion de cliente de MU con ollydbg y x64dbg
Ingeniería Inversa
bunnydroid 0 2,868 Último mensaje 15 Abril 2019, 22:37 pm
por bunnydroid
modificacion de codigo en C
Programación C/C++
DAOST420 1 3,039 Último mensaje 12 Noviembre 2020, 18:11 pm
por K-YreX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines