Java - Problemas con charAt(0) y FileWriter

   
Vista:

Problemas con charAt(0) y FileWriter

Publicado por Pep (3 intervenciones) el 27/09/2007 19:22:58
Estoy aprendiendo Java con un manual y al hacer el siguiente programa no entiendo cual es el problema. El programa lee un archivo de texto y almacena en un nuevo solo las lineas que empiezan por '+' o '-'.
Pero parece ser que hay un problema en la linea

if( lineaTexto.charAt(0) == '+' || lineaTexto.charAt(0) == '-'){
filtro2.write(lineaTexto+'\r'+'\n');

ya que me retorna el siguiente mensaje:

Error al leer el fichero String index out of range: 0
Leidas en el fichero c:\pepe.txt 5 lineas
Escritas en el fichero Resultado.txt 2 lineas
Fin de la ejecucion del programa

Este es el codigo del programa

package capitulo10;
import java.io.*;
public class Fichero4 {
public static void main(String args[]) {
String nombreFichero=null;
String lineaTexto;
int nLeidas=0;
int nEscritas=0;
InputStreamReader flujo = new InputStreamReader(System.in);
BufferedReader teclado = new BufferedReader(flujo);

try{
System.out.println( "Introduce el nombre del fichero");
nombreFichero = teclado.readLine();
File canal1 = new File( nombreFichero );
File canal2 = new File( "c:\\Resultados.txt");
FileWriter flujo2 = new FileWriter(canal2);
BufferedWriter filtro2 = new BufferedWriter(flujo2);
if (canal1.canRead()){
FileReader flujo1 = new FileReader( canal1);
BufferedReader filtro1 = new BufferedReader(flujo1);

while(filtro1.ready() == true) {
lineaTexto= filtro1.readLine();
if( lineaTexto.charAt(0) == '+' || lineaTexto.charAt(0) == '-'){
filtro2.write(lineaTexto+'\r'+'\n');
nEscritas++;
}
System.out.println(lineaTexto);
nLeidas++;
}
flujo1.close();
}
flujo2.close();
} catch (Exception e){
System.out.println("Error al leer el fichero "+e.getMessage());
}
System.out.println("Leidas en el fichero "+ nombreFichero+ " "+ nLeidas+ " lineas");
System.out.println("Escritas en el fichero Resultado.txt "+ nEscritas+ " lineas");
System.out.println("Fin de la ejecucion del programa");
}
}

Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas con charAt(0) y FileWriter

Publicado por Himura (184 intervenciones) el 27/09/2007 19:38:29
Hola,

Puede que cuando leas el archivo haya una linea vacia que se almacena en tu variable lineaTexto.

Para evitarlo antes de usar el charAt pon una validacion donde compruebes que la longitud de la cadena sea mayor a cero.

if(lineaTexto.length() > 0){
//lo que sigue
}

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con charAt(0) y FileWriter

Publicado por pep (3 intervenciones) el 27/09/2007 19:58:02
Hola Himura,

Muchas gracias por la respuesta. Ahora ya no me salta el programa. Pero no se porque no me escribe en el fichero de texto aunque si escoge las lineas que empiezan por + o por -
Sabes a que puede ser debido?

Muchas gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problemas con charAt(0) y FileWriter

Publicado por Himura (2 intervenciones) el 28/09/2007 16:31:05
Hola,

Después de que termine el ciclo donde escribe en el fichero tienes que vaciar el stream (flujo), ya que primero la escritura se hace ahi.

while( ){
// escribes en el fichero
}

//en tu caso la variable que escribe es la de filtro2
//vacias el flujo
filtro2.flush();

//lo cierras en caso de que ya no lo ocupes mas
flitro2.close()

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar