Frage

Ich verwende die folgende Grundfunktion, die ich aus dem Netz kopiert, um eine Textdatei zu lesen

    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");
}
}

Es funktioniert gut mit mittlerer und kleiner Datei (die 10-20.000 Datenzeile enthält) Allerdings scheiterte er mit einer Datei arbeiten, die 500 Tausend Zeilen enthalten. Ich bin nicht erhalte eine Fehlermeldung (zumindest nicht zu sehen, jemand). Also, was ist los? Was soll ich hier tun, um bereit, eine so große Dateien zu können?

Hinweis: Ich stieg bereits den Heap für 2 GB auf der Testmaschine, die Windows Server 2008 mit 4 GB RAM. aber so viel nicht helfen!

Bitte kann mir jemand sagen, was ich soll hier tun?


Update 01

Im Folgenden ist der Ausgang

  

Start

     

java.util.Scanner [Begrenzungszeichen = \ p {javaWhitespace} +] [position = 0] [übereinstimmen gültig = false] [Notwendigkeit input = false] [Quelle geschlossen = false] [übersprungenen = false] [group separator = \] [Dezimalzeichen =.] [positive prefix =] [negative prefix = \ Q- \ E] [positive suffix =] [negative suffix =] [NaN string = \ Q \ E] [infinity string = \ Q ∞ \ E]

     

Ende der Try Bluck

     

Ende

War es hilfreich?

Lösung

Besser geht für BufferedReader mit einem Filereader

Andere Tipps

Wenn Sie einen Fehler nicht bekommen, könnte es auch nur eine lange Zeit sein. Ist die Platte immer noch aktiv? Was machst du mit der Konsolenausgabe - hat es aufgehört? Sie sagen, dass es „zur Arbeit nicht bestanden“, aber Sie haben nicht gesagt, wie es verhält sich eigentlich. Was sehen Sie?

Speicher sollten kein Problem sein, da du nicht wirklich mit den Linien etwas zu tun -. Sie nur zählen und sie an die Konsole zu schreiben

Ein Problem in Ihrem Code - Sie überprüfen, ob scanner null ist, aber es kann nicht möglicherweise , weil Sie die Referenz von einem Konstruktor-Aufruf zurückgegeben verwenden. Welche Situation waren Sie versuchen, mit fertig zu werden?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top