Pregunta

Estoy usando la siguiente función básica que he copiado de la red para leer un archivo de texto

    public void read ()
{
    File file = new File("/Users/MAK/Desktop/data.txt");
    System.out.println("Start");
    try
    {
        //
        // Create a new Scanner object which will read the data from the
        // file passed in. To check if there are more line to read from it
        // we check by calling the scanner.hasNextLine() method. We then
        // read line one by one till all line is read.
        //
        Scanner scanner = new Scanner(file);
        int lineCount = 0;
        if (scanner == null)
        {
            System.out.println("Null File");
        }
        else
        {
            System.out.println(scanner.toString());
        }
        while (scanner.hasNextLine())
        {
            String line = scanner.nextLine();

            System.out.println("Line " + lineCount +" contain : " + line);
            lineCount++;
        }
        System.out.println("End of Try Bluck");
    }
    catch (FileNotFoundException e)
    {
        e.printStackTrace();
        System.out.println("Exception Bluck");
    }
    System.out.println("End");
}
}

Está funcionando bien con medio y tamaño de archivo pequeño (que contienen 10-20000 línea de datos) No obstante no pudo trabajar con un archivo que contiene la línea de 500 mil. Hasta ahora no recibo un error (por lo menos no ver a nadie). ¿Entonces qué está pasando? ¿Qué debo hacer para ser capaz de preparar a un archivos de gran tamaño tales?

nota: I ya aumentado el montón de 2 GB en la máquina de prueba que ejecuta Windows Server 2008 con 4 GB de RAM. pero esto no ayuda mucho!

Por favor, alguien me puede decir lo que debo hacer aquí?


Actualizar 01

La siguiente es la salida

  

Inicio

     

java.util.Scanner [delimitadores = \ p {javaWhitespace} +] [posición = 0] [coincidencia válida = false] [necesitar de entrada = false] [código cerrado = false] [saltado = false] [separador de grupo = \,] [separador decimal =.] [prefijo positivo =] [prefijo negativo = \ Q \ E] [sufijo positivo =] [sufijo negativo =] [NaN cadena = \ Q \ E] [cadena infinita = \ Q ∞ \ E]

     

Fin de la Trata Bluck

     

Fin

¿Fue útil?

Solución

ir mejor para BufferedReader con un FileReader

Otros consejos

Si usted no está recibiendo un error, bien podría ser simplemente tomando mucho tiempo. Es el disco sigue activa? ¿Qué haces con la salida de la consola - que ha dejado? Usted dice que "no funcionó", pero que no han dicho cómo se comporta en realidad. ¿Qué estás viendo?

La memoria no debería ser un problema, ya que usted no está realmente hacer nada con las líneas -. Acaba de contarlas y escribirlos en la consola

Uno de los problemas en el código - que está comprobando si scanner es nulo, pero no puede posiblemente ser, porque está utilizando la referencia devuelta por una llamada al constructor. Qué situación estabas tratando de hacer frente a?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top