Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/03/2015, 21:01
Lawliet18
 
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.