Foros del Web » Programación para mayores de 30 ;) » Java »

Lineas en Blanco Archivo Plano

Estas en el tema de Lineas en Blanco Archivo Plano en el foro de Java en Foros del Web. buenos Dias :). Gracias por tomarse el tiempo de leer mi Mensaje , ojala puedan ayudarme a solucionar esta duda que tengo ; resulta que ...
  #1 (permalink)  
Antiguo 29/01/2011, 10:24
Avatar de gasoft  
Fecha de Ingreso: abril-2009
Mensajes: 68
Antigüedad: 15 años
Puntos: 3
Pregunta Lineas en Blanco Archivo Plano

buenos Dias :).

Gracias por tomarse el tiempo de leer mi Mensaje , ojala puedan ayudarme a solucionar esta duda que tengo ; resulta que estoy leyendo un archivo plano ; y el archivo plano cada columna es importante y tengo que validar que estén separadas por (comas), etc. Para eso utilizo un Scanner y le asigno un Delimitador; hasta aquí todo bien. El problema radica cuando el archivo plano que analizo tiene lineas en blanco; eso genera una excepción. He Visto que el Scanner tiene un metodo skip() ; que segun entiendo sirve para saltarse alguna parte del Archivo Plano.

Se me ocurre utilizar el skip para decirle que ignore las Lineas en Blanco, pero desconozco una expresión regular que sirva para ello.

Me gustaría escuchar alguna sugerencia para esta situación; si es viable utilizar el skip o de que otra forma puedo ignorar las Lineas en Blanco de un Archivo.


Gracias por su atención :)
  #2 (permalink)  
Antiguo 29/01/2011, 11:18
 
Fecha de Ingreso: enero-2011
Mensajes: 105
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Lineas en Blanco Archivo Plano

seguro lo entiendes si lees mi post, al que yo tambien hice la misma pregunta, pero de otra forma xd de paso me doy publi a ver si alguien sabe ayudarme

de primeras te digo que utilices el bufferedreader, como utilizo yo aqui:

http://www.forosdelweb.com/f45/ayuda-con-bufferedreader-java-io-ioexception-stream-closed-880688/
  #3 (permalink)  
Antiguo 29/01/2011, 13:58
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Lineas en Blanco Archivo Plano

Habría que ver tu código, Scanner no tiene ningún problema con las líneas en blanco.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 30/01/2011, 05:18
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Lineas en Blanco Archivo Plano

Hola:

Scanner, con sus métodos nextXXX(), separador y demás te sirve bien si el fichero tiene exactamente el formato que esperas al ir haciendo las lecturas. Si como en tu caso puede haber líneas en blanco en cualquier sitio, entonces no puedes hacer la lectura así, necesitas una lectura un poco más inteligente.

Vete leyendo las líneas del fichero en un bucle con un BufferedReader, que tiene método readLine().

Cada línea analízala para saber si contiene o no datos. Una forma sencilla de saber si una línea es una línea en blanco es esta

if (linea.trim().equals("")) {

trim() quita espacios (la línea en blanco puede estar compuesta por espacios) y después de quitar los espacios la comparas con "". Si es en blanco, hay que saltársela y pasar a la siguiente.

Una vez que sepas que la línea no es una línea en blanco, si tienes ya garantía de que cumple el formato que esperas, puedes construir el Scannner así

Scanner sc = new Scanner (linea);

y leer los campos de esa línea.

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #5 (permalink)  
Antiguo 04/02/2011, 10:45
Avatar de gasoft  
Fecha de Ingreso: abril-2009
Mensajes: 68
Antigüedad: 15 años
Puntos: 3
De acuerdo Respuesta: Lineas en Blanco Archivo Plano

Gracias amigos por sus respuestas ; siguiendo la sugerencia de chuidiang ; he utilizado un BufferedReader y he saltado las lineas en blanco con un if ( if (!linea.trim().equals("")) ).

Dejo el código para los que presenten el mismo problema; tal vez les sea de utilidad.


Código JAVA:
Ver original
  1. File f = new File(rutaArchivo);
  2.         FileReader fr = null;
  3.         BufferedReader br = null;
  4.     String separador = ",";
  5.     String valor = "";
  6.  
  7.     try {
  8.             fr = new FileReader(f);
  9.             br = new BufferedReader(fr);
  10.             String linea;
  11.             while ((linea = br.readLine()) != null) {
  12.             //con el if se determina si lee la linea si no esta vacia.
  13.             if (!linea.trim().equals("")) {
  14.                 Scanner sl = new Scanner(linea);
  15.                     sl.useDelimiter("\\s*"+separador+"\\s*");
  16.                     while (sl.hasNext()) {
  17.                         valor = sl.next();
  18.                         //aqui el tratamiento de c/u de los datos
  19.                     }
  20.             }
  21.            }
  22.      } catch (Exception e) {
  23.             e.printStackTrace();
  24.         } finally {
  25.             // En el finally cerramos el fichero, para asegurarnos
  26.             // que se cierra tanto si todo va bien como si salta
  27.             // una excepcion.
  28.             try {
  29.                 if (null != fr) {
  30.                     fr.close();
  31.                 }
  32.             } catch (Exception e2) {
  33.                 e2.printStackTrace();
  34.             }
  35.         }


De nuevo gracias por su ayuda :)


gasoft

Etiquetas: blanco, lineas, plano
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:03.