Автор оригинала: Pankaj Kumar.
Существует множество способов чтения текстового файла на java. Давайте рассмотрим различные методы чтения текстовых файлов java один за другим.
Текстовый файл чтения Java
Существует множество способов чтения текстового файла на java. Текстовый файл состоит из символов, поэтому мы можем использовать классы чтения. Существуют также некоторые служебные классы для чтения текстового файла на java.
- Java читает текстовый файл с помощью класса Files
- Чтение текстового файла на java с помощью
Программа чтения файлов
- Java считывает текстовый файл с помощью BufferedReader
- Использование Класса сканера для чтения текстового файла на java
Теперь давайте рассмотрим примеры, показывающие, как читать текстовый файл на java с помощью этих классов.
Java считывает текстовый файл с помощью java.nio.file.Файлы
Мы можем использовать класс Files для чтения всего содержимого файла в массив байтов. Класс Files также имеет метод для чтения всех строк в списке строк. Класс Files представлен в Java 7, и это хорошо, если вы хотите загрузить все содержимое файла. Вы должны использовать этот метод только тогда, когда работаете с небольшими файлами и вам нужно, чтобы все содержимое файла было в памяти.
String fileName = "/Users/pankaj/source.txt"; Path path = Paths.get(fileName); byte[] bytes = Files.readAllBytes(path); ListallLines = Files.readAllLines(path, StandardCharsets.UTF_8);
Прочитайте текстовый файл на java с помощью java.io.FileReader
Вы можете использовать FileReader, чтобы получить BufferedReader, а затем читать файлы строка за строкой. Программа чтения файлов не поддерживает кодировку и работает с системной кодировкой по умолчанию, поэтому это не очень эффективный способ чтения текстового файла на java.
String fileName = "/Users/pankaj/source.txt"; File file = new File(fileName); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; while((line = br.readLine()) != null){ //process the line System.out.println(line); }
Вы можете использовать FileReader, чтобы получить BufferedReader, а затем читать файлы строка за строкой. Программа чтения файлов не поддерживает кодировку и работает с системной кодировкой по умолчанию, поэтому это не очень эффективный способ чтения текстового файла на java.
BufferedReader хорош, если вы хотите читать файлы построчно и обрабатывать их. Он хорош для обработки большого файла и также поддерживает кодирование.
BufferedReader синхронизирован, поэтому операции чтения в BufferedReader можно безопасно выполнять из нескольких потоков. Размер буфера BufferedReader по умолчанию составляет 8 КБ.
String fileName = "/Users/pankaj/source.txt"; File file = new File(fileName); FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, cs); BufferedReader br = new BufferedReader(isr); String line; while((line = br.readLine()) != null){ //process the line System.out.println(line); } br.close();
Использование сканера для чтения текстового файла на java
Если вы хотите читать файл построчно или на основе какого-либо регулярного выражения java , используйте класс Scanner.
Сканер разбивает свой ввод на маркеры, используя шаблон разделителя, который по умолчанию совпадает с пробелами. Полученные токены затем могут быть преобразованы в значения различных типов с использованием различных методов next. Класс сканера не синхронизирован и, следовательно, не является потокобезопасным.
Path path = Paths.get(fileName); Scanner scanner = new Scanner(path); System.out.println("Read text file using Scanner"); //read line by line while(scanner.hasNextLine()){ //process each line String line = scanner.nextLine(); System.out.println(line); } scanner.close();
Пример файла чтения Java
Вот пример класса, показывающего, как читать текстовый файл на java. В качестве примеров методов используются Сканер, Файлы, буферизатор с поддержкой кодирования и Средство чтения файлов.
package com.journaldev.files; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.Scanner; public class JavaReadFile { public static void main(String[] args) throws IOException { String fileName = "/Users/pankaj/source.txt"; //using Java 7 Files class to process small files, get complete file data readUsingFiles(fileName); //using Scanner class for large files, to read line by line readUsingScanner(fileName); //read using BufferedReader, to read line by line readUsingBufferedReader(fileName); readUsingBufferedReaderJava7(fileName, StandardCharsets.UTF_8); readUsingBufferedReader(fileName, StandardCharsets.UTF_8); //read using FileReader, no encoding support, not efficient readUsingFileReader(fileName); } private static void readUsingFileReader(String fileName) throws IOException { File file = new File(fileName); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; System.out.println("Reading text file using FileReader"); while((line = br.readLine()) != null){ //process the line System.out.println(line); } br.close(); fr.close(); } private static void readUsingBufferedReader(String fileName, Charset cs) throws IOException { File file = new File(fileName); FileInputStream fis = new FileInputStream(file); InputStreamReader isr = new InputStreamReader(fis, cs); BufferedReader br = new BufferedReader(isr); String line; System.out.println("Read text file using InputStreamReader"); while((line = br.readLine()) != null){ //process the line System.out.println(line); } br.close(); } private static void readUsingBufferedReaderJava7(String fileName, Charset cs) throws IOException { Path path = Paths.get(fileName); BufferedReader br = Files.newBufferedReader(path, cs); String line; System.out.println("Read text file using BufferedReader Java 7 improvement"); while((line = br.readLine()) != null){ //process the line System.out.println(line); } br.close(); } private static void readUsingBufferedReader(String fileName) throws IOException { File file = new File(fileName); FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); String line; System.out.println("Read text file using BufferedReader"); while((line = br.readLine()) != null){ //process the line System.out.println(line); } //close resources br.close(); fr.close(); } private static void readUsingScanner(String fileName) throws IOException { Path path = Paths.get(fileName); Scanner scanner = new Scanner(path); System.out.println("Read text file using Scanner"); //read line by line while(scanner.hasNextLine()){ //process each line String line = scanner.nextLine(); System.out.println(line); } scanner.close(); } private static void readUsingFiles(String fileName) throws IOException { Path path = Paths.get(fileName); //read file to byte array byte[] bytes = Files.readAllBytes(path); System.out.println("Read text file using Files class"); //read file to String list @SuppressWarnings("unused") ListallLines = Files.readAllLines(path, StandardCharsets.UTF_8); System.out.println(new String(bytes)); } }
Выбор использования сканера или буферного считывателя или файлов для чтения файлов зависит от требований вашего проекта. Например, если вы просто регистрируете файл, вы можете использовать файлы и BufferedReader. Если вы хотите проанализировать файл на основе разделителя, вам следует использовать класс сканера.
Прежде чем я закончу этот урок, я хочу упомянуть о RandomAccessFile . Мы можем использовать это для чтения текстового файла на java.
RandomAccessFile file = new RandomAccessFile("/Users/pankaj/Downloads/myfile.txt", "r"); String str; while ((str = file.readLine()) != null) { System.out.println(str); } file.close();
Это все для примеров программ чтения текстовых файлов java.