Leer txt y resaltar o cambiar a mayuscula palabras buscadas en el archivo.

Iniciado por makarov, 24 Agosto 2017, 18:28 PM

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

makarov

Buen dia.
El programa que intento hacer es la lectura de un archivo txt. el programa le pregunta que sub palabra desa buscar dentro del archivo. busca las coincidencias y cambia la palabra o sub palabra buscada por mayuscula.
El programa lee el txt, encuentra las coincidencias pero al escribir el archivo para cambiar a mayuscula las coincidencias encontradas me sale error. Espero me ayuden. Dejo el codeigo para que miren.  Que otro codigo proponen?
GRACIAS

Código (java) [Seleccionar]
public class metodos extends main {
public static String patron="";
static Scanner leer = new Scanner(System.in);
public static void leerTxt() throws IOException {
BufferedReader bufferedReader = new BufferedReader(new FileReader("src\\cadena.txt"));            
       String texto = "";

System.out.println("¿ Que cadena desea buscar ?");
patron = leer.next();
try {
while(( texto=bufferedReader.readLine())!=null){
System.out.println(texto);
System.out.println("buscando....");
Pattern regex = Pattern.compile(patron);
Matcher match = regex.matcher(texto);
int count=0;        
while(match.find()){
count ++; //Recorremos el archivo linea a linea e imprimimos
System.out.println("Encontrado "+match.group() ); // las coincidencias.
}
System.out.println("se encontraron "+count+" coincidencias");
}
} catch (FileNotFoundException e) {e.printStackTrace();
}

File f =new File("src\\cadenadena.txt");
FileWriter fw=new FileWriter(f);
BufferedWriter bw=new BufferedWriter(fw);
bw.write(texto.replaceAll(patron, patron.toUpperCase()));
}
}

   texto : guarda las lineas del archivo y las imprime.
       patron : es la palabra o subpalabra que va a buscar.
La salida que arroja el programa es el siguiente:

Leyendo Texto...
¿ Que cadena desea buscar ?
i
..........Lectura del archivo.............
Encontrado i
Encontrado i
  .
  .
  .
se encontraron 28 coincidencias
Exception in thread "main" java.lang.NullPointerException
   at leertxt.metodos.leerTxt(metodos.java:36)
   at leertxt.main.main(main.java:10)
la linea 36 de esta clase es :
bw.write(texto.replaceAll(patron, patron.toUpperCase()));
la linea 10 del main.java es :
metodos.leerTxt();

ivancea96

Es un poco tarde, pero bueno:
Utilizas: texto.replaceAll
Y arriba tienes:
Código (java) [Seleccionar]
while(( texto=bufferedReader.readLine())!=null)
Por tanto, texto va a ser null cuando salga del bucle.