Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: makarov en 24 Agosto 2017, 18:28 PM

Título: Leer txt y resaltar o cambiar a mayuscula palabras buscadas en el archivo.
Publicado por: makarov en 24 Agosto 2017, 18:28 PM
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();
Título: Re: Leer txt y resaltar o cambiar a mayuscula palabras buscadas en el archivo.
Publicado por: ivancea96 en 30 Agosto 2017, 18:06 PM
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.