2013-03-29 9 views
10

Ich habe eine Textdatei foo.txt genannt, und ihr Inhalt sind wie folgt:Java: print Inhalt der Textdatei Bildschirm

diese

ist

Text

Wie würde ich diese genaue Datei auf dem Bildschirm in Java 7 drucken?

+1

Es klingt wie Sie Text aus einer Datei lesen müssen. Ich kann Ihnen versichern, dass es im Web viele Informationen zum Lesen von Dateien in Java gibt ... –

+1

Ich sage es Ihnen! Ich kann das nirgendwo finden! Und ja, ich benutze Google. – user2151887

+1

Diese letzte Frage enthält genau die Details, nach denen Sie suchen: http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java. – RouteMapper

Antwort

25

Vor Java 7:

BufferedReader br = new BufferedReader(new FileReader("foo.txt")); 
String line = null; 
while ((line = br.readLine()) != null) { 
    System.out.println(line); 
} 
  • Add Ausnahmebehandlung
  • add den Stream schließen

Da Java 7 gibt es keine Notwendigkeit, den Strom zu schließen, weil sie implementiert autocloseable

try (BufferedReader br = new BufferedReader(new FileReader("foo.txt"))) { 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     System.out.println(line); 
    } 
} 
+1

Aber was mit Codierung? Dieser Code hängt von der Standardcodierung der Plattform ab. – kkhipis

+1

Richtig, ich wollte den einfachsten Fall liefern. Wenn Sie die Kodierung explizit angeben möchten, dann würden Sie anstelle von 'FileReader' ['new InputStreamReader ('] (http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader) verwenden .html) ['new FileInputStream (Pfad zu Datei)'] (http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html) ', )'. –

1

Für diejenigen, die neu in Java sind und sich wundern, warum Jiris Antwort nicht funktioniert, stellen Sie sicher, dass Sie das tun, was er sagt, und die Ausnahme behandeln, sonst wird sie nicht kompiliert. Hier ist das absolute Minimum:

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 

public class ReadFile { 

    public static void main(String args[]) throws IOException { 
     BufferedReader br = new BufferedReader(new FileReader("test.txt")); 
     for (String line; (line = br.readLine()) != null;) { 
      System.out.print(line); 
     } 
     br.close() 
    } 
} 
2

Mit Java 7 der Try-with-Ressourcen Jiri Antwort kann verbessert werden:

try (BufferedReader br = new BufferedReader(new FileReader("foo.txt"))) { 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     System.out.println(line); 
    } 
} 

Add Ausnahme am Ort Ihrer Wahl Handhabung, entweder in diesen try oder anderswo .

7

Warum hat niemand gedacht, dass es sich lohnt, Scanner zu erwähnen?

Scanner input = new Scanner(new File("foo.txt")); 

while (input.hasNextLine()) 
{ 
    System.out.println(input.nextLine()); 
} 
0

Jedes Beispiel hier zeigt eine Lösung mit dem FileReader. Es ist praktisch, wenn Sie sich nicht um eine Dateicodierung kümmern müssen. Wenn Sie andere Sprachen als Englisch verwenden, ist die Codierung sehr wichtig. Stellen Sie sich vor, Sie haben Datei mit diesem Text

Příliš žluťoučký kůň 
úpěl ďábelské ódy 

und die Datei verwendet Windows-1250-Format. Wenn Sie Filereader verwenden, werden Sie dieses Ergebnis:

P��li� �lu�ou�k� k�� 
�p�l ��belsk� �dy 

Also in diesem Fall müssten Sie Codierung angeben, wie CP1250 (Windows osteuropäisch), aber die Filereader nicht zulässt, dass dies zu tun. In diesem Fall sollten Sie InputStreamReader für einen FileInputStream verwenden.

Beispiel:

String encoding = "Cp1250"; 
File file = new File("foo.txt"); 

if (file.exists()) { 
    try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), encoding))) { 
     String line = null; 
     while ((line = br.readLine()) != null) { 
      System.out.println(line); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 
else { 
    System.out.println("file doesn't exist"); 
} 

Im Fall, dass Sie die Datei Zeichen nach Zeichen lesen, nicht BufferedReader verwenden.

try (InputStreamReader isr = new InputStreamReader(new FileInputStream(file), encoding)) { 
    int data = isr.read(); 
    while (data != -1) { 
     System.out.print((char) data); 
     data = isr.read(); 
    } 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
Verwandte Themen