Рубрики
Без рубрики

Текстовый файл чтения Java

Java читает текстовый файл, читает текстовый файл на java, java читает текстовый файл в строку FileReader, InputStreamReader, BufferedReader, Файлы, Сканер, Случайный файл

Автор оригинала: Pankaj Kumar.

Существует множество способов чтения текстового файла на java. Давайте рассмотрим различные методы чтения текстовых файлов java один за другим.

Текстовый файл чтения Java

Существует множество способов чтения текстового файла на java. Текстовый файл состоит из символов, поэтому мы можем использовать классы чтения. Существуют также некоторые служебные классы для чтения текстового файла на java.

  1. Java читает текстовый файл с помощью класса Files
  2. Чтение текстового файла на java с помощью Программа чтения файлов
  3. Java считывает текстовый файл с помощью BufferedReader
  4. Использование Класса сканера для чтения текстового файла на 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);
List allLines = 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")
		List allLines = 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.