logo

Різні способи читання текстового файлу в Java

У Java є кілька способів прочитати текстовий файл залежно від розміру даних і варіанту використання. The java.io і пакети java.nio.file надати кілька класів для ефективного читання файлів. Давайте обговоримо загальні підходи один за іншим.

1. Використання класу BufferedReader

BufferedReader клас читає текст із потоку символів і буферизує символи для ефективного читання. Його часто обертають навколо a FileReader або InputStreamReader для покращення продуктивності.

Синтаксис

BufferedReader in = new BufferedReader(Reader int size);



Java
import java.io.*; public class UsingBufferReader {  public static void main(String[] args) throws Exception{    // Creating BufferedReader for Input  BufferedReader bfri = new BufferedReader(  new InputStreamReader(System.in));  System.out.print('Enter the Path : ');  // Reading File name  String path = bfri.readLine();  BufferedReader bfro  = new BufferedReader(new FileReader(path));  String st;  while ((st = bfro.readLine()) != null)  System.out.println(st);  } } 


Вихід

ВикористанняBufferReader' title=Вихід

2. Клас FileReader для читання текстового файлу

The Клас FileReader використовується для читання текстових файлів у Java. Він читає символи з файлу та підходить для читання звичайного тексту. Конструктори цього класу припускають, що стандартне кодування символів і розмір байтового буфера за замовчуванням є відповідними. 

Конструктори, визначені в цьому класі, такі:

  • FileReader (файл файлу): Створює новий FileReader із заданим файлом для читання
  • FileReader(FileDescriptor fd): Створює новий FileReader із заданим FileDescriptor для читання
  • FileReader (String fileName): Створює новий FileReader із назвою файлу для читання
Java
import java.io.*; public class UsingFileReader {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();  FileReader fr = new FileReader(path);  int i;    // Holds true till there is nothing to read  while ((i = fr.read()) != -1)  // Print all the content of a file  System.out.print((char)i);  } } 


Вихід

Використання FileReader' loading='lazy' title=Вихід

3. Клас сканера для читання текстового файлу

Клас сканера забезпечує простий спосіб читання текстових файлів і аналізу примітивних типів або рядків за допомогою регулярні вирази . Він розбиває вхідні дані на токени за допомогою розділювача (за замовчуванням пробіл).

приклад 1: З використанням петель

Java
import java.io.*; import java.util.Scanner; public class UsingScannerClass  {  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    // pass the path to the file as a parameter  File file = new File(path);    Scanner sc = new Scanner(file);  while (sc.hasNextLine())  System.out.println(sc.nextLine());  } } 


Вихід

що таке регістр у sql
ВикористанняBufferReader' loading='lazy' title=Вихід

приклад 2: Без використання петель

Java
import java.io.*; import java.util.Scanner; public class ReadingEntireFileWithoutLoop {  public static void main(String[] args)  throws IOException  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    File file = new File(path);    Scanner sc = new Scanner(file);  // we just need to use \Z as delimiter  sc.useDelimiter('\Z');  System.out.println(sc.next());  } } 


Вихід

Читання всього файлу без циклу' loading='lazy' title=Вихід

4. Читання всього файлу в списку

Ми можемо прочитати весь текстовий файл у список за допомогою Files.readAllLines() метод від пакет java.nio.file . Кожен рядок у файлі стає одним елементом у списку.

Синтаксис

public static List readAllLines(Path pathCharset cs)викидає IOException

Цей метод розпізнає наступне як термінатори рядка: 

  • u000Du000A -> Повернення каретки + Переведення рядка
  • u000A -> Перехід рядка
  • u000D -> Повернення каретки
Java
import java.io.*; import java.nio.charset.StandardCharsets; import java.nio.file.*; import java.util.*; public class ReadFileIntoList  {  public static List<String> readFileInList(String fileName)  {  // Created List of String  List<String> lines = Collections.emptyList();    try {  lines = Files.readAllLines(  Paths.get(fileName)  StandardCharsets.UTF_8);  } catch(IOException e) {  e.printStackTrace();  }    return lines;  }    public static void main(String[] args)  throws IOException  {    BufferedReader br = new  BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    List l = readFileInList(path);    // Iterator iterating over List  Iterator<String> itr = l.iterator();    while (itr.hasNext())  System.out.println(itr.next());  } } 


Вихід

ReadFileIntoList' loading='lazy' title=Вихід

5. Читання текстового файлу як рядка

Ми можемо читати весь текстовий файл як один рядок у Java. Це корисно, коли ви хочете обробити вміст файлу в цілому, а не рядок за рядком.

Синтаксис:

Мадхурі сказав

String data = new String(Files.readAllBytes(Paths.get(fileName)));

приклад:

Java
package io; import java.nio.file.*; public class ReadTextAsString {  public static String readFileAsString(String fileName)  throws Exception  {  String data = '';  data = new String(  Files.readAllBytes(Paths.get(fileName)));  return data;  }  public static void main(String[] args) throws Exception  {  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  System.out.print('Enter the Path : ');    // Reading File name  String path = br.readLine();    String data = readFileAsString(path);    System.out.println(data);  } } 

Вихід

ReadTextAsString' loading='lazy' title=Вихід

Створіть вікторину