Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Cambiar String en varias filas dentro de un TXT

Estas en el tema de Cambiar String en varias filas dentro de un TXT en el foro de Java en Foros del Web. Hola chic@s: Ojala me puedan ayudar pues estoy haciendo una aplicacion en java pero quede colgado en esta parte. Tengo un archivo de texto que ...
  #1 (permalink)  
Antiguo 26/03/2015, 13:36
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Información Cambiar String en varias filas dentro de un TXT

Hola chic@s:
Ojala me puedan ayudar pues estoy haciendo una aplicacion en java pero quede colgado en esta parte.
Tengo un archivo de texto que tiene por ejemplo la siguiente informacion:

P01 24/03/2015 11:04:25 OK
P02 24/03/2015 18:01:02 OK
P04 24/03/2015 18:01:11 OK
P08 26/03/2015 20:44:38 OK

Lo que necesito hacer y aun no he podido, es que segun el codigo del comienzo (P01), se cambie la palabra "OK", por "ENVIADO". Pueden cambiar tanto una como varias filas, dependiendo del código que les decía denante.

Ojala me puedan ayudar.
Saludos y gracias

Última edición por worel001; 26/03/2015 a las 13:40 Razón: estaba mal escrito
  #2 (permalink)  
Antiguo 26/03/2015, 21:01
 
Fecha de Ingreso: marzo-2015
Mensajes: 45
Antigüedad: 9 años, 1 mes
Puntos: 2
Respuesta: Cambiar String en varias filas dentro de un TXT

Pues si todavía sigues con el problema, aquí tengo una solución simple pero funcional

Código:
package com.cambiarstring.main;

import java.io.*;
import java.util.*;

public class CambiarStringMain {
	public static void main(String[] args) {
		// Recursos necesarios para la lectura
		FileReader fr = null;
		BufferedReader br = null;
		
		// Recursos necesarios para la escritura
		FileWriter fw = null;
		PrintWriter pw = null;
		
		// Lista de string actualizada
		List<String> filas = new ArrayList<String>();
		
		String[] cadena = null;
		try {
			String ruta = "C:\\Users\\Quality\\Desktop\\string.txt";
			
			// Comienza la lectura del archivo especificado en la ruta
			File archivo = new File (ruta);
			fr = new FileReader (archivo);
			br = new BufferedReader(fr);
			
			String linea;
			while((linea=br.readLine())!=null){
				cadena = linea.split(" ");
				if (cadena[3].equals("OK")){
					cadena[3] = "ENVIADO";
				}
				filas.add(cadena[0] + " " + cadena[1] + " " + cadena[2] + " " + cadena[3] + " ");
			}
			try {
				// Inicializamos los recursos de escritura de archivo por unica vez
				fw = new FileWriter(ruta);
				pw = new PrintWriter(fw);
				
				for(int i = 0; i < filas.size(); i++){
					pw.println(filas.get(i));
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				// Liberamos los recursos de escritura
				try {
					fr.close();
					fw.close();
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		} catch(Exception e){
			e.printStackTrace();
		} finally{
			try{
				// Liberamos los recursos de lectura
				pw.close();
			}catch (Exception e){ 
				e.printStackTrace();
			}
		}
	}
}
Te explico... De acuerdo a tu archivo podemos ver que tienes un separador el cual viene siendo el espacio, entonces, primeramente hacemos que cada linea del archivo leído sea un String el cual podemos manipular, en este caso viene perfecto usar el método split(), ya que por cada espacio que encuentre en la String creara un arreglo de Strings; es decir, por cada String "P01 24/03/2015 11:04:25 OK" creara lo siguiente:

1.- P01
2.- 24/03/2015
3.- 11:04:25
4.- OK

Para mayor información acerca del método, te invito a leer la API de Java.

Como podemos observar, para poder acceder al valor del "OK" unicamente hacemos referencia a la posición(index), de esta manera es cuestion de hacer una simple comparacíon entre el valor que recupera y la palabra con ayuda del metodo equals(), donde sustituimos el valor por "ENVIADO" si la condición se cumple.

Continuamos creamos la estructura del archivo y la añadimos a un arreglo de tipo String, el cual ya tendrá el valor cambiado si llega a cumplirse la condición.

Finalmente, recorremos la lista de String y por cada item de la lista, vamos escribiendo en el archivo.

Eso sería todo, cualquier aclaración, duda y/o comentario, aquí estaremos.
  #3 (permalink)  
Antiguo 27/03/2015, 02:54
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Cambiar String en varias filas dentro de un TXT

A cada línea le aplicas

if(linea.startsWith("P01")){
linea=linea.replace("OK","ENVIADO");
}
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 27/03/2015, 09:08
 
Fecha de Ingreso: agosto-2009
Mensajes: 12
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Cambiar String en varias filas dentro de un TXT

Muchas gracias chicos, estuve too el dia de ayer tratando de hacerlo y si bien tenia harto avanzado, el resultado no me salia como esperaba. La verdad me sirvieron las 2 formas que postearon asique se los agradezco.
Busque por todos lados y en ninguna parte vi que hubiera un método "startsWith". Aunque igual era como obvio, no se como no se me ocurrió.
Lo del split también esta buenísimo.

Nuevamente gracias a todos. Saludos

Etiquetas: txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:06.