2009-04-08 15 views
19

Come leggere e visualizzare i dati da file .txt?Lettura e visualizzazione dei dati da un file .txt

+1

qualche informazione in più per la questione sarebbe probabilmente aiuterà a ottenere risposte migliori. Le informazioni su ciò che sai, ciò che pensi di sapere, ecc. Possono aiutarti se ci sono domande specifiche. –

risposta

41
BufferedReader in = new BufferedReader(new FileReader("<Filename>")); 

Quindi, è possibile utilizzare in.readLine(); leggere una singola riga alla volta. Per leggere fino alla fine, scrivere un ciclo while come tale:

String line; 
while((line = in.readLine()) != null) 
{ 
    System.out.println(line); 
} 
in.close(); 
+3

Ricordarsi di aggiungere in.close(); alla fine del tuo codice. – Brian

+0

come si controlla quanto è lungo il file? –

9

In generale:

  • Creare un FileInputStream per il file.
  • Creare un InputStreamReader avvolgendo il flusso di input, specificando la corretta encoding
  • creare Opzionalmente un BufferedReader intorno al InputStreamReader, che rende più semplice per leggere una riga alla volta.
  • Leggi fino a quando non ci sono più dati (ad esempio readLine restituisce null)
  • Visualizza i dati mentre lo fai o lo bufferizzi per dopo.

Se hai bisogno di ulteriore aiuto, ti preghiamo di essere più specifico nella tua domanda.

19

Se il file è strettamente testo, preferisco utilizzare la classe java.util.Scanner.

È possibile creare una Scanner fuori di un file:

Scanner fileIn = new Scanner(new File(thePathToYourFile)); 

Quindi, è possibile leggere il testo dal file utilizzando i metodi:

fileIn.nextLine(); // Reads one line from the file 
fileIn.next(); // Reads one word from the file 

E, si può controllare se c'è altro testo rimasto con:

fileIn.hasNext(); // Returns true if there is another word in the file 
fileIn.hasNextLine(); // Returns true if there is another line to read from the file 

Una volta letto il testo e salvato in un String, è possibile stampare la stringa alla riga di comando con:

System.out.print(aString); 
System.out.println(aString); 

Il link postato contiene la specifica completa per la classe Scanner. Ti sarà utile per aiutarti con qualsiasi altra cosa tu voglia fare.

+0

Mi dimentico sempre di Scanner, non l'ho mai usato in realtà ... Peccato che ci voglia un charset * nome * però :((E raccomando sempre di specificare esplicitamente il set di caratteri) –

+0

Beh, sto assumendo lo scenario più semplice possibile. i set di caratteri possono diventare confusi, di solito non devi preoccuparti di questo – jjnguy

+0

Ma gli scanner sono grandi per la lettura di file di testo veloce e sporca. – jjnguy

-1

Molto probabilmente vorrete utilizzare la classe FileInputStream:

int character; 
StringBuffer buffer = new StringBuffer(""); 
FileInputStream inputStream = new FileInputStream(new File("/home/jessy/file.txt")); 

while((character = inputStream.read()) != -1) 
     buffer.append((char) character); 

inputStream.close(); 
System.out.println(buffer); 

Si vuole anche per la cattura di alcune delle eccezioni generate dal metodo read() e il costruttore FileInputStream, ma questi sono dettagli di implementazione specifici per il tuo progetto.

+1

inputStream.read() non restituisce un carattere * * - i t restituisce un * byte * (come int, ammettiamolo, ma sono cose molto diverse). Per leggere il testo, dovresti usare un Reader. –

0

Se si vuole prendere alcune scorciatoie è possibile utilizzare Apache Commons IO:

import org.apache.commons.io.FileUtils; 

String data = FileUtils.readFileToString(new File("..."), "UTF-8"); 
System.out.println(data); 

:-)

7

Amo questo pezzo di codice, utilizzarlo per caricare un file in una stringa:

File file = new File("/my/location"); 
String contents = new Scanner(file).useDelimiter("\\Z").next(); 
0

Per leggere le righe da.file txt con encoding UTF-8:

File krokiPath = new File("Records\Record"); 
BufferedReader in = new BufferedReader(
     new InputStreamReader(new FileInputStream(krokiPath), "UTF8")); 

while((r = in.readLine()) != null) { 
    System.out.println(r); 
} 
in.close(); 
+0

Sì, l'ho provato. Uso caratteri come "ąśćłżóź" e funziona perfettamente. Senza di esso, non potrei usare questi caratteri. –

+0

Interessante. Grazie. – Tom

+0

Un'altra cosa. Funziona solo per app/oggetti che supportano UTF-8 :) –

0
public class PassdataintoFile { 

    public static void main(String[] args) throws IOException { 
     try { 
      PrintWriter pw = new PrintWriter("C:/new/hello.txt", "UTF-8"); 
      PrintWriter pw1 = new PrintWriter("C:/new/hello.txt"); 
      pw1.println("Hi chinni"); 
      pw1.print("your succesfully entered text into file"); 
      pw1.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (UnsupportedEncodingException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     BufferedReader br = new BufferedReader(new FileReader("C:/new/hello.txt")); 
      String line; 
      while((line = br.readLine())!= null) 
      { 
       System.out.println(line); 
      } 
      br.close(); 
    } 

} 
+1

Ciao e benvenuto su StackOverflow. Si prega di prendere un po 'di tempo per leggere la pagina di aiuto, in particolare le sezioni denominate ["Quali argomenti posso chiedere di qui?"] (Http://stackoverflow.com/help/on-topic) e ["Quali tipi di domande dovrei evitare di chiedere? "] (http://stackoverflow.com/help/dont-ask). E, ancora più importante, leggi [la lista di controllo delle domande di Overflow dello stack] (http://meta.stackexchange.com/q/156810/204922). Potresti anche voler conoscere [Esempi minimi, completi e verificabili] (http://stackoverflow.com/help/mcve). –

0

In Java 8, è possibile leggere un file intero, semplicemente con:

public String read(String file) throws IOException { 
    return new String(Files.readAllBytes(Paths.get(file))); 
} 

o se una risorsa:

public String read(String file) throws IOException { 
    URL url = Resources.getResource(file); 
    return Resources.toString(url, Charsets.UTF_8); 
} 
0

Sotto è il codice che puoi provare a leggere un file e visualizzarlo in java usando la classe scanner. Il codice leggerà il nome del file dall'utente e stamperà i dati (file VIM del Blocco note).

import java.io.*; 
import java.util.Scanner; 
import java.io.*; 

public class TestRead 
{ 
public static void main(String[] input) 
{ 
    String fname; 
    Scanner scan = new Scanner(System.in); 

    /* enter filename with extension to open and read its content */ 

    System.out.print("Enter File Name to Open (with extension like file.txt) : "); 
    fname = scan.nextLine(); 

    /* this will reference only one line at a time */ 

    String line = null; 
    try 
    { 
     /* FileReader reads text files in the default encoding */ 
     FileReader fileReader = new FileReader(fname); 

     /* always wrap the FileReader in BufferedReader */ 
     BufferedReader bufferedReader = new BufferedReader(fileReader); 

     while((line = bufferedReader.readLine()) != null) 
     { 
      System.out.println(line); 
     } 

     /* always close the file after use */ 
     bufferedReader.close(); 
    } 
    catch(IOException ex) 
    { 
     System.out.println("Error reading file named '" + fname + "'"); 
    } 
} 

}

Problemi correlati