У меня есть текстовый файл с именем foo.txt
, и его содержимое, как показано ниже:Java: содержимое печати текстового файла на экран
это
является
текст
Как я могу напечатать этот точный файл на экране в Java 7?
У меня есть текстовый файл с именем foo.txt
, и его содержимое, как показано ниже:Java: содержимое печати текстового файла на экран
это
является
текст
Как я могу напечатать этот точный файл на экране в Java 7?
Перед 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);
}
}
Но что с кодировкой? Этот код зависит от кодировки платформы по умолчанию. – kkhipis
Правильно, я хотел предоставить простейший случай. Если вы хотите явно указать кодировку вместо «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) ',
Для тех, кто не знаком с 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()
}
}
С Java 7 Пробуем-с-ресурсов ответ Иржи может быть улучшен: обработка
try (BufferedReader br = new BufferedReader(new FileReader("foo.txt"))) {
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
Добавить исключение в месте по своему выбору, либо в этом try
или в другом месте ,
Почему никто не думал, что стоит упомянуть сканер?
Scanner input = new Scanner(new File("foo.txt"));
while (input.hasNextLine())
{
System.out.println(input.nextLine());
}
В каждом примере здесь показано решение с использованием 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();
}
Похоже, вам нужно прочитать текст из файла. Я могу заверить вас, что в Интернете много информации о чтении из файлов на Java ... –
Я вам говорю! Я ничего не могу найти! И да, я использую Google. – user2151887
Этот вопрос имеет только те детали, которые вы ищете: http://stackoverflow.com/questions/2788080/reading-a-text-file-in-java. – RouteMapper