2010-01-12 17 views
5

Come leggere un file .txt in Java e inserire ogni riga in un array quando ogni riga contiene numeri interi, stringhe e doppie? E ogni riga ha diverse quantità di parole/numeri.Leggere un file di testo in java

Sono un noob completo in Java, quindi mi dispiace se questa domanda è un po 'stupida.

Grazie

+1

Si prega di essere più specifici nella tua domanda, che cosa vuoi fare esattamente con ogni linea? –

+0

Questa domanda dovrebbe aiutarti: http://stackoverflow.com/questions/224952 –

+0

@Fabian Steeg: la domanda a cui ti sei collegato non affronta i diversi tipi di dati come questo. – Powerlord

risposta

2

La tua domanda non è molto chiaro, quindi risponderò solo per la parte "leggere":

List<String> lines = new ArrayList<String>(); 
BufferedReader br = new BufferedReader(new FileReader("fileName")); 
String line = br.readLine(); 
while (line != null) 
{ 
    lines.add(line); 
    line = br.readLine(); 
} 
+2

hai dimenticato br.close() –

11

Prova la classe Scanner che nessuno conosce, ma può fare quasi tutto con il testo.

Per ottenere un lettore di file, utilizzare

File file = new File ("...path..."); 
String encoding = "...."; // Encoding of your file 
Reader reader = new BufferedReader (new InputStreamReader (
    new FileInputStream (file), encoding)); 

... use reader ... 

reader.close(); 

Si dovrebbe specificare la codifica, altrimenti si ottengono risultati strani quando si incontra dieresi, Unicode e simili.

+0

+1 per indicare lo scanner. Non ne avevo mai sentito parlare prima. Classe interessante – JasCav

+1

"Nessuno conosce lo scanner". almeno è vero per me. Lo scanner può essere utilizzato anche come: Scanner sc = new Scanner (new File ("fileName")); // qualche idea perché non usarla in questo modo? – sttaq

+0

@sttaq: perché utilizza la codifica predefinita. Non utilizzare mai la codifica predefinita durante la lettura dei dati. Scopri sempre l'input o specifica quale codifica accetta il tuo codice; in ogni caso, inchiodalo a qualcosa di specifico. –

6

L'opzione più semplice è utilizzare semplicemente il JAR Apache Commons IO e importare la classe org.apache.commons.io.FileUtils. Ci sono molte possibilità quando si usa questa classe, ma la più ovvia sarebbe la seguente;

List<String> lines = FileUtils.readLines(new File("untitled.txt")); 

È così facile.

"Non reinventare la ruota."

1

comune utilizzata:

String line = null; 
    File file = new File("readme.txt"); 

    FileReader fr = null; 
    try 
    { 
     fr = new FileReader(file); 
    } 
    catch (FileNotFoundException e) 
    { 
     System.out.println("File doesn't exists"); 
     e.printStackTrace(); 
    } 
    BufferedReader br = new BufferedReader(fr); 

    try 
    { 
     while((line = br.readLine()) != null) 
    { 
     System.out.println(line); 
    } 
+1

Benvenuti in Stack Overflow! Grazie per il tuo post! Per favore non usare firme/tagline nei tuoi post. Il tuo box utente conta come la tua firma, e puoi usare il tuo profilo per pubblicare qualsiasi informazione che ti riguarda. [FAQ su firme/taglines] (http://stackoverflow.com/faq#signatures) Soprattutto, per favore non includere l'URL del tuo sito web, poiché i tuoi post potrebbero essere contrassegnati come spam. –

0

@ user248921 prima di tutto, è possibile memorizzare qualsiasi cosa in array di stringhe, in modo da poter fare matrice di stringhe e memorizzare una linea di array e uso valore nel codice ogni volta che vuoi . è possibile utilizzare il seguente codice per memorizzare righe eterogenee (contenenti stringhe, int, booleane, ecc.) nella matrice.

public class user { 
public static void main(String x[]) throws IOException{ 
    BufferedReader b=new BufferedReader(new FileReader("<path to file>")); 
    String[] user=new String[500]; 
    String line=""; 
    while ((line = b.readLine()) != null) { 
    user[i]=line; 
    System.out.println(user[1]); 
    i++; 
    } 

} 
} 
Problemi correlati