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

Problema con FileReader

Estas en el tema de Problema con FileReader en el foro de Java en Foros del Web. Hola me gustaria haceros una consulta ya que llevo un buen rato comiendome el coco y no encuentro una solución. Estoy utilizando la siguiente acción ...
  #1 (permalink)  
Antiguo 30/03/2013, 05:42
 
Fecha de Ingreso: diciembre-2012
Mensajes: 16
Antigüedad: 11 años, 4 meses
Puntos: 0
Problema con FileReader

Hola me gustaria haceros una consulta ya que llevo un buen rato comiendome el coco y no encuentro una solución.
Estoy utilizando la siguiente acción para leer archivos de texto:
Código:
 public static String Reader (String arxiu) {
         int i = 1, num_lletres;  String s = "";
      
         BufferedReader entrada;
         boolean error = false;;
         
         try {
            String info = "";
            FileReader fr = new FileReader(arxiu);  // Ruta logica de l'arxiu que volem llegir
            entrada = new BufferedReader(fr); 
            while((s = entrada.readLine()) != null)  // Mentre trobi linees en l'arxiu
            {
               info = info + s;
               System.out.println(i++ + ":\t" + s); 
				
            	
            
            }
            entrada.close();
            return(info);
         }
            catch(java.io.FileNotFoundException fnfex) {
               System.out.println("Arxiu no trobat: " + fnfex);}
         
            catch(java.io.IOException ioex) {}
         return"";
      }
La acción funciona bien, mi problema es más adelante ya que necesito conseguir que me diga cuantas lineas y vocales hay en el texto que lea (a parte de otras cosas xD)
El tema es que si no usase el FileReader y crease un texto desde una String poniendo \n para cambiar de linea consigo que me diga cuantas lineas hay con esta función:
Código:
    public static int devolver_linea(String info)
      {
         String word;
         StringTokenizer tokenizer;
         int wordCount=0;
         String retorno="";
         tokenizer = new StringTokenizer (info, "\n");
         while (tokenizer.hasMoreTokens())
         {             word = tokenizer.nextToken();
         
            if (info.length() > wordCount) {
               wordCount++;
            }
            
         
         }
         return (wordCount);
      
      
      }
Pero con el texto del FileReader no hay manera que me localice los \n por lo que no consigo que el programa localice cuantas lineas hay.
Con las palabras me pasa lo mismo, este es el codigo que estoy utilizando para ellas:
Código:
		    public static int NumPalabras ( String frase )	{
         String word;
         StringTokenizer tokenizer;
         int wordCount=0;
      
         tokenizer = new StringTokenizer (frase);
         while (tokenizer.hasMoreTokens())
         {
            word = tokenizer.nextToken();
            if (word.length()<frase.length()) wordCount++;
         }
         return (wordCount);
      }
¿Alguna sugerencia?
Gracias
  #2 (permalink)  
Antiguo 30/03/2013, 09:51
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Problema con FileReader

Al leer del fichero, los \n no se consideran parte de la cadena, por lo tanto tu variable info contendrá todo el texto pero sin ningún \n.

Si necesitas trabajar con el contenido de diversas líneas, si las líneas son independientes haz una List con un String por línea, si esas líneas forman grupos puedes plantearte crear objetos.

O usa al leer del fichero info = info + "\n" + s pero sería una tontería estar luego separando por frases de nuevo.
__________________
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.
  #3 (permalink)  
Antiguo 30/03/2013, 15:26
 
Fecha de Ingreso: marzo-2013
Mensajes: 1
Antigüedad: 11 años, 1 mes
Puntos: 0
Respuesta: Problema con FileReader

en mi opinion para poder solucionarlo, debes poner un contador de lineas y otro de palabras, el contador de lineas que se incremente cada vez que haces el:
while((s = entrada.readLine()) != null) // Mentre trobi linees en l'arxiu{...}
aqui dentro debes incrementar el contador de lineas porque si estas dentro significa que hay mas lineas.

Despues el problema de las palabras, deberias crear una funcion donde te devuelva el num de palabras a una variable que has creado anteriormente, asi ir sumandolo y una vez ya has salido del bucle (while((s = entrada.readLine()) != null) // Mentre trobi linees en l'arxiu) entonces imprimir por pantalla las dos variables.

Etiquetas: programa, string
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 14:11.