elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Contar Lineas y Leer Fichero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Contar Lineas y Leer Fichero  (Leído 23,344 veces)
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Contar Lineas y Leer Fichero
« en: 2 Noviembre 2012, 07:43 am »

Buenas Tengo el siguiente código, tiene un problema que es que quiero leer las lineas del fichero o saber cuantas lineas tiene el fichero antes de comenzar a leerlo.

Pero cuando lo hago, tengo el pequeño problema que si me cuenta las lineas no me lee el fichero, no se que hacer, AYUDA!!

Código
  1.        try{
  2.            // Abrimos el archivo
  3.            FileInputStream fstream = new FileInputStream("registros.txt");
  4.            // Creamos el objeto de entrada
  5.            DataInputStream entrada = new DataInputStream(fstream);
  6.            // Creamos el Buffer de Lectura
  7.            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
  8.            String strLinea;
  9.            // Contar lineas
  10.            while ((strLinea = buffer.readLine())!=null) {
  11.              NumeroLineas++;
  12.            }
  13.            // Leer el archivo linea por linea
  14.            while ((strLinea = buffer.readLine()) != null)   {
  15.                // Imprimimos la línea por pantalla
  16.                System.out.println (strLinea);
  17.            }
  18.            // Cerramos el archivo
  19.            entrada.close();
  20.        }catch (Exception e){ //Catch de excepciones
  21.            System.err.println("Ocurrio un error: " + e.getMessage());
  22.        }
  23.  


En línea

<<<--Basura-->>>
Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


Ver Perfil
Re: Contar Lineas y Leer Fichero
« Respuesta #1 en: 3 Noviembre 2012, 12:44 pm »

Estás repitiendo el bucle dos veces de manera innecesaria, y además es incorrecto, ya que una vez que has llegado al fin de archivo (readLine devuelve null) no puedes seguir leyéndolo a no ser que reinicies la entrada de datos.

Código
  1. try{
  2.            // Abrimos el archivo
  3.            FileInputStream fstream = new FileInputStream("registros.txt");
  4.            // Creamos el objeto de entrada
  5.            DataInputStream entrada = new DataInputStream(fstream);
  6.            // Creamos el Buffer de Lectura
  7.            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
  8.            String strLinea;
  9.            // Contar lineas
  10.            // Leer el archivo linea por linea
  11.            while ((strLinea = buffer.readLine())!=null) {
  12.              NumeroLineas++;
  13.                // Imprimimos la línea por pantalla
  14.                System.out.println (strLinea);
  15.            }
  16.            // Cerramos el flujo.
  17.            entrada.close();
  18.        }catch (Exception e){ //Catch de excepciones
  19.            System.err.println("Ocurrio un error: " + e.getMessage());
  20.        }
  21.  


En línea

Nasty35

Desconectado Desconectado

Mensajes: 77


Ver Perfil
Re: Contar Lineas y Leer Fichero
« Respuesta #2 en: 4 Noviembre 2012, 22:57 pm »

Hola, no se si funciona pero prueba a ejecutar la función mark, indicándole el integer 0, para que reinicie hasta la línea cero:
Código
  1. try{
  2.            // Abrimos el archivo
  3.            FileInputStream fstream = new FileInputStream("registros.txt");
  4.            // Creamos el objeto de entrada
  5.            DataInputStream entrada = new DataInputStream(fstream);
  6.            // Creamos el Buffer de Lectura
  7.            BufferedReader buffer = new BufferedReader(new InputStreamReader(entrada));
  8.            String strLinea;
  9.            // Contar lineas
  10.            while ((strLinea = buffer.readLine())!=null) {
  11.              NumeroLineas++;
  12.            }
  13.            buffer.mark(0); // empieza a leer desde el principio
  14.            // Leer el archivo linea por linea
  15.            while ((strLinea = buffer.readLine()) != null)   {
  16.                // Imprimimos la línea por pantalla
  17.                System.out.println (strLinea);
  18.            }
  19.            // Cerramos el archivo
  20.            entrada.close();
  21.        }catch (Exception e){ //Catch de excepciones
  22.            System.err.println("Ocurrio un error: " + e.getMessage());
  23.        }
En línea

Fireball-CH

Desconectado Desconectado

Mensajes: 131


Rebelblade 2009


Ver Perfil
Re: Contar Lineas y Leer Fichero
« Respuesta #3 en: 5 Noviembre 2012, 19:03 pm »

Qué tal, amigo!

A mí me funciona de esta manera:
Código:
    private int calcular_longitud() throws IOException {
        File fichero = new File("Fichero.txt");
        FileReader fr = new FileReader(fichero);
        BufferedReader br = new BufferedReader(fr);
        String s;
        int longitud = 0;

        while((s = br.readLine()) != null)
            longitud++;

        br.close();
        br = null;      // Libera memoria
        fr.close();
        fr = null;      // Libera memoria
        fichero = null; // Libera memoria

        return longitud;
    }
En línea

Video en el que explico cómo instalar y configurar Apache 2.0.54, PHP 5.0.0 y MySQL 4.0.20: http://www.mediafire.com/?fevmmnlyzzd
<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Re: Contar Lineas y Leer Fichero
« Respuesta #4 en: 25 Noviembre 2012, 09:58 am »

Gracias a todos, ya lo logre.
En línea

<<<--Basura-->>>
HalconEye

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Contar Lineas y Leer Fichero
« Respuesta #5 en: 29 Noviembre 2012, 23:00 pm »

package leer_fichero;

public class Leer_Fichero {
//Muestra cómo obtener la longitud de una cadena de caracteres e investiga
   //la posición de un determinado caracter.
   /**Se aprovecharán varios métodos de la clase String para realizar las
    * operaciones sobre las cadenas de caracteres,tales como calcular su longitud,
    * extraer determinados caracteres o bien investigar qué caracter ocupa la
    * posición inicial o final de la cadena.En este ejercicio creo el objeto nombre
    * de la clase String al que se le asigna la cadena de caracteres "Bukanero".
    * El método lenght calcula la longitud de esta cadena.
 * El método indexOf("a") investiga en qué posición está la primera letra "a",empezando
    * por la izquierda
    *
    */
   public static void main(String[] args) {
      // TODO Auto-generated method stub
String nombre;
nombre = "Bukanero";
System.out.print(" El nombre " + nombre + " tiene " + nombre.length() + " caracteres\n ");
System.out.print(" El nombre " + nombre + " tiene la letra 'a' en la posición " +
      nombre.indexOf("a") + "\n");
System.out.println("Empieza por:"+ nombre.substring(0,1));
System.out.print("Termina por:" + nombre.substring(7));
   }

}

Y al ejecutarlo aparecerá esto:

El nombre Bukanero tiene 8 caracteres
  El nombre Bukanero tiene la letra 'a' en la posición 3
Empieza por:B
Termina por:o

En línea

Todo lo que digan que somos,
lo somos y aún peor.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Contar las lineas de un RichTextBox
Programación Visual Basic
Hendrix 0 1,826 Último mensaje 5 Septiembre 2006, 22:54 pm
por Hendrix
Contar lineas TextBox multiline
Programación Visual Basic
Hendrix 3 7,469 Último mensaje 12 Septiembre 2006, 10:25 am
por txomin
Problemas con salto de lineas al leer un fichero
Programación C/C++
petrusqui 4 8,982 Último mensaje 4 Abril 2012, 20:11 pm
por cassiel83
Contar nuemero de lineas de un fichero
Programación C/C++
Cas980 2 15,051 Último mensaje 18 Abril 2014, 00:33 am
por rir3760
[Pregunta]: Contar saltos de lineas de una cadena (PHP)
PHP
Leguim 4 7,774 Último mensaje 4 Diciembre 2019, 16:14 pm
por Leguim
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines