Java - lineas en blanco de un fichero de texto

   
Vista:

lineas en blanco de un fichero de texto

Publicado por chopaqui (29 intervenciones) el 15/04/2010 09:15:55
hola soi un principiante en java; y tengo que hacer un programa que coje un fichero de texto con lienas que estan compuestas por números, de esas lineas tengo que coger los 13 primeros digitos y los compare, despues tiene que escribirlo en otro fichero sin repetidos, lo que hago es comparar las lineas y meterlas en un hashmap, enviarlo a otra función que lo escribe, mi problema es que cuando se encuentra con una linea en blanco no hace nada os adjunto el codigo de las dos funciones echas por mi:

private void comparar(String fichero)//método que compara las lineas del fichero
{
try
{
FileReader f = new FileReader(fichero);//crea un objeto de la clase FileReader para abrir un fichero
BufferedReader bf = new BufferedReader(f);//crea un objeto de la clase BufferedReader para leer del fichero
String linea;//declara una variable de tipo cadena de texto que almacenará las lineas del fichero
Map<String, String> mapa = new Hashtable<String, String>();//crea un objeto de la clase Hashtable una colección que guardará las lineas del fichero

while((linea = bf.readLine()) != null)//recorre el fichero y asigna las distintas lineas a la variable linea
{
String codigo = linea.substring(0,13);//declara la variable código y la inicia a la cadena de los caracteres 0 a 13 de linea
if(!mapa.containsKey(codigo))//comprueba que codigo no esta en el mapa
{
mapa.put(codigo, linea);//añade al mapa el código
}
}
f.close();//cierra el fichero
escribir(mapa, fichero);//llama a la método escribir
}catch (FileNotFoundException e1)
{
JOptionPane.showMessageDialog (null, "No se puede encontrar el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
}
catch (IOException e1)
{
JOptionPane.showMessageDialog (null, "Error al leer el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
}
}
private void escribir(Map<String,String> mapa, String nombre)//método que escribe el nuevo fichero
{
try
{
FileWriter fichero = new FileWriter("c:/validos/"+nombre);//crea un objeto de la clase FileWriter que abre el nuevo fichero
PrintWriter pw = new PrintWriter(fichero);//crea un objeto de la clase PrintWriter para escribir en el nuevo fichero
for(String codigo : mapa.keySet())//recorre el mapa hasta que queden elementos
{
pw.println(mapa.get(codigo));//escribe la linea en el fichero
pw.flush();//vacia el bufer
}
fichero.close();//cierra el fichero
pw.close();//cierra el PrintWriter
}catch (IOException e)
{
JOptionPane.showMessageDialog (null, "Error al escribir el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
} catch (Throwable e)
{
JOptionPane.showMessageDialog (null, "Error al cerrar el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
}
}
}

muchas gracias, cualquier idea es de ayuda
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:lineas en blanco de un fichero de texto

Publicado por Yamil Bracho (2072 intervenciones) el 15/04/2010 23:22:05
Puedes hacer algo como :
while((linea = bf.readLine()) != null) {
linea = linea.trim();
if (linea.length() == 0) {
continue;
}
....
}
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:lineas en blanco de un fichero de texto

Publicado por ahora no lo escribe (29 intervenciones) el 16/04/2010 10:27:55
hola, gracias por responder, parece que ahora lo coge pero me salta por el catch de la función escribir por la ioexception vuelvo a dejar el código por si alguien puede aportar la solución
private void comparar(String fichero)//método que compara las lineas del fichero
{
try
{
FileReader f = new FileReader("D:/Mis documentos/Archivos trazabilidad/BUZON/OUT/"+fichero);//crea un objeto de la clase FileReader para abrir un fichero
BufferedReader bf = new BufferedReader(f);//crea un objeto de la clase BufferedReader para leer del fichero
String linea;//declara una variable de tipo cadena de texto que almacenará las lineas del fichero
Map<String, String> mapa = new Hashtable<String, String>();//crea un objeto de la clase Hashtable una colección que guardará las lineas del fichero

while((linea = bf.readLine()) != null)//recorre el fichero y asigna las distintas lineas a la variable linea
{
linea = linea.trim();
if(linea.length() == 0)
{
continue;
}
else
{
String codigo = linea.substring(0,13);//declara la variable código y la inicia a la cadena de los caracteres 0 a 13 de linea
if(!mapa.containsKey(codigo))//comprueba que codigo no esta en el mapa
{
mapa.put(codigo, linea);//añade al mapa el código
}
}
}
f.close();//cierra el fichero
escribir(mapa, fichero);//llama a la método escribir
}
catch (FileNotFoundException e1)
{
JOptionPane.showMessageDialog (null, "No se puede encontrar el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
}
catch (IOException e1)
{
JOptionPane.showMessageDialog (null, "Error al leer el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
}
}
private void escribir(Map<String,String> mapa, String nombre)//método que escribe el nuevo fichero
{
try
{
FileWriter fichero = new FileWriter("D:/Mis documentos/Archivos trazabilidad/BUZON/OUT/Validos/"+nombre);//crea un objeto de la clase FileWriter que abre el nuevo fichero
PrintWriter pw = new PrintWriter(fichero);//crea un objeto de la clase PrintWriter para escribir en el nuevo fichero
for(String codigo : mapa.keySet())//recorre el mapa hasta que queden elementos
{
pw.println(mapa.get(codigo));//escribe la linea en el fichero
pw.flush();//vacia el bufer
}
fichero.close();//cierra el fichero
pw.close();//cierra el PrintWriter
}
catch (IOException e)
{
JOptionPane.showMessageDialog (null, "Error al escribir el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
}
catch (Throwable e)
{
JOptionPane.showMessageDialog (null, "Error al cerrar el fichero", "Error", JOptionPane.ERROR_MESSAGE);//muestra un mensage de error
}
}
}
muchar gracias
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:lineas en blanco de un fichero de texto

Publicado por problema resuelto (29 intervenciones) el 16/04/2010 11:00:40
hola otra vez tenias razón así funciona era un problema de la ruta
por cierto que hace concretamente la función trim
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:lineas en blanco de un fichero de texto

Publicado por Yamil Bracho (2072 intervenciones) el 16/04/2010 16:03:19
trim() elimina blancos al derecha y izquierda en un string
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:lineas en blanco de un fichero de texto

Publicado por Dario Martinez (1 intervención) el 29/08/2016 01:50:01
valida que linea != null;
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