2013-03-29 5 views
10

У меня есть текстовый файл с именем foo.txt, и его содержимое, как показано ниже:Java: содержимое печати текстового файла на экран

это

является

текст

Как я могу напечатать этот точный файл на экране в Java 7?

+1

Похоже, вам нужно прочитать текст из файла. Я могу заверить вас, что в Интернете много информации о чтении из файлов на Java ... –

+1

Я вам говорю! Я ничего не могу найти! И да, я использую Google. – user2151887

+1

Этот вопрос имеет только те детали, которые вы ищете: http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java. – RouteMapper

ответ

25

Перед Java 7:

BufferedReader br = new BufferedReader(new FileReader("foo.txt")); 
String line = null; 
while ((line = br.readLine()) != null) { 
    System.out.println(line); 
} 
  • добавить исключение обработки
  • надстройку закрывающих поток

Поскольку Java 7, нет необходимости закрывать поток, поскольку он реализует autocloseable

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

Но что с кодировкой? Этот код зависит от кодировки платформы по умолчанию. – kkhipis

+1

Правильно, я хотел предоставить простейший случай. Если вы хотите явно указать кодировку вместо «FileReader», вы должны использовать ['new InputStreamReader (') (http://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader .html) ['new FileInputStream (pathToFile)'] (http://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html) ', )'. –

1

Для тех, кто не знаком с Java и не понимает, почему ответ Jiri не работает, убедитесь, что вы делаете то, что он говорит, и обрабатываете исключение, иначе он не будет компилироваться. Вот голый минимум:

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

С Java 7 Пробуем-с-ресурсов ответ Иржи может быть улучшен: обработка

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

Добавить исключение в месте по своему выбору, либо в этом try или в другом месте ,

7

Почему никто не думал, что стоит упомянуть сканер?

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

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

В каждом примере здесь показано решение с использованием FileReader. Это удобно, если вам не нужно заботиться о кодировке файлов. Если вы используете некоторые другие языки, кроме английского, кодирование очень важно. Представьте, что у вас есть файл с этим текстом

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

и файл использует формат windows-1250. Если вы используете FileReader вы получите этот результат:

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

Таким образом, в этом случае вам нужно будет указать кодировку, CP1250 (Windows Восточной Европы), но FileReader не позволяет сделать это. В этом случае вы должны использовать InputStreamReader для FileInputStream.

Пример:

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

В случае, если вы хотите, чтобы прочитать файл символ после символа не использовать BufferedReader.

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(); 
} 
Смежные вопросы