Domanda

Sto utilizzando la seguente funzione di base che ho copiato dalla rete per leggere un file di testo

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

Funziona bene con le medie e piccole dimensioni del file, che contengono da 10 a 20 mila linea di dati) Tuttavia non è riuscito a lavorare con un file che contengono 500 mila linea.Non ricevo un errore (almeno, non vedendo nessuno).quindi, cosa sta succedendo?che cosa devo fare qui per essere in grado ad un file di grandi dimensioni?

nota:Ho già aumentato il mucchio di 2 GB sulla macchina di test che esegue Windows Server 2008 con 4 GB di ram.ma questo non mi aiuta molto!

Per favore, qualcuno mi sa dire cosa dovrei fare qui?


Aggiornamento 01

Il seguente è l'output

Inizio

java.util.Scanner[delimitatori=\p{javaWhitespace}+][position=0][match valido=false][bisogno di input=false][fonte chiuso=false][ignorato=false][separatore di gruppo=\,][separatore decimale=.][positivo prefisso=][prefisso negativo=\Q\E][positivo suffisso=][negativo suffisso=][NaN string=\Q�\E][infinity string=\Q∞\E]

Fine di Provare Bluck

Fine

È stato utile?

Soluzione

Meglio andare per BufferedReader con un FileReader

Altri suggerimenti

Se non stai ricevendo un errore, potrebbe anche solo essere un lungo periodo di tempo.È il disco ancora attivo?Cosa stai facendo con la console di output - ha fermati?Tu dici che "non funzionano" ma non hai detto come è effettivamente comportarsi.Cosa stai vedendo?

La memoria non dovrebbe essere un problema, come non stai effettivamente facendo qualcosa con le linee - solo conteggio di loro e della loro scrittura per la console.

Un problema nel codice - si sta la verifica se scanner è nullo, ma non può forse essere, perché si sta utilizzando il riferimento restituito da una chiamata al costruttore.Che situazione siete stati cercando di far fronte con?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top