
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
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


0