logo

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

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

Методи:



  1. Використання Клас BufferedReader
  2. Використання Клас сканера
  3. Використання класу File Reader
  4. Читання всього файлу в списку
  5. Читання текстового файлу як рядка

Ми також можемо використовувати BufferReader і Scanner для читання текстового файлу рядок за рядком у Java. Тоді Java SE 8 представляє інший клас Stream java.util.stream.Stream який забезпечує відкладений і більш ефективний спосіб читання файлу.

Порада Примітка: Практики написання хорошого коду, як-от очищення/закриття потоків, обробка винятків тощо, також уникали для кращого розуміння кодів початківцями.

Давайте обговоримо кожен із наведених вище методів більш глибоко і, що найважливіше, реалізуючи їх за допомогою чистої програми Java.



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

Цей метод читає текст із потоку введення символів. Він буферизує для ефективного читання символів, масивів і рядків. Можна вказати розмір буфера або використовувати стандартний розмір. Значення за замовчуванням достатньо велике для більшості цілей. Загалом, кожен запит на читання, зроблений Reader, викликає виконання відповідного запиту на читання основного потоку символів або байтів. Тому доцільно обернути BufferedReader навколо будь-якого Reader, чиї операції read() можуть бути дорогими, наприклад FileReaders і InputStreamReaders, як показано нижче:

Синтаксис

BufferedReader in = new BufferedReader(Reader in, int size);>

приклад



Java


відкритий файл java



// Java Program to illustrate Reading from FileReader> // using BufferedReader Class> // Importing input output classes> import> java.io.*;> // Main class> public> class> GFG {> >// main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// File path is passed as parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >// Note: Double backquote is to avoid compiler> >// interpret words> >// like est as (ie. as a escape sequence)> >// Creating an object of BufferedReader class> >BufferedReader br> >=>new> BufferedReader(>new> FileReader(file));> >// Declaring a string variable> >String st;> >// Condition holds true till> >// there is character in a string> >while> ((st = br.readLine()) !=>null>)> >// Print the string> >System.out.println(st);> >}> }>

>

>

Вихід

If you want to code refer to techcodeview.com>

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

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

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

    FileReader(File file): Створює новий FileReader, заданий File для читання з FileReader(FileDescriptor fd): Створює новий FileReader, заданий FileDescriptor для читання з FileReader(String fileName): Створює новий FileReader, враховуючи назву файл для читання

приклад

Java




// Java Program to Illustrate reading from> // FileReader using FileReader class> // Importing input output classes> import> java.io.*;> // Main class> // ReadingFromFile> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// Passing the path to the file as a parameter> >FileReader fr =>new> FileReader(> >'C:UserspankajDesktop est.txt'>);> >// Declaring loop variable> >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);> >}> }>

>

>

Вихід

If you want to code refer to techcodeview.com>

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

Простий текстовий сканер, який може аналізувати примітивні типи та рядки за допомогою регулярних виразів. Сканер розбиває вхідні дані на маркери за допомогою шаблону розділювача, який за замовчуванням відповідає пробілам. Отримані токени можна потім перетворити на значення різних типів за допомогою різних наступних методів.

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

Java

приклад java lambda




// Java Program to illustrate> // reading from Text File> // using Scanner Class> import> java.io.File;> import> java.util.Scanner;> public> class> ReadFromFileUsingScanner {> >public> static> void> main(String[] args)>throws> Exception> >{> >// pass the path to the file as a parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >while> (sc.hasNextLine())> >System.out.println(sc.nextLine());> >}> }>

>

>

оператори if else java

Вихід

If you want to code refer to techcodeview.com>

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

Java




// Java Program to illustrate reading from FileReader> // using Scanner Class reading entire File> // without using loop> import> java.io.File;> import> java.io.FileNotFoundException;> import> java.util.Scanner;> public> class> ReadingEntireFileWithoutLoop {> >public> static> void> main(String[] args)> >throws> FileNotFoundException> >{> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >// we just need to use  as delimiter> >sc.useDelimiter(>''>);> >System.out.println(sc.next());> >}> }>

>

>

Вихід

If you want to code refer to techcodeview.com>

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

Прочитати всі рядки з файлу. Цей метод гарантує, що файл буде закрито, коли всі байти прочитано або виникне помилка вводу-виводу чи інша виняткова ситуація під час виконання. Байти з файлу декодуються в символи за допомогою вказаного набору символів.

Синтаксис:

public static List readAllLines(Path path,Charset cs)throws IOException>

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

u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>

приклад

Java




// Java program to illustrate reading data from file> // using nio.File> import> java.io.*;> import> java.nio.charset.StandardCharsets;> import> java.nio.file.*;> import> java.util.*;> public> class> ReadFileIntoList {> >public> static> List> >readFileInList(String fileName)> >{> >List lines = Collections.emptyList();> >try> {> >lines = Files.readAllLines(> >Paths.get(fileName),> >StandardCharsets.UTF_8);> >}> >catch> (IOException e) {> >// do something> >e.printStackTrace();> >}> >return> lines;> >}> >public> static> void> main(String[] args)> >{> >List l = readFileInList(> >'C:UserspankajDesktop est.java'>);> >Iterator itr = l.iterator();> >while> (itr.hasNext())> >System.out.println(itr.next());> >}> }>

>

>

Вихід

If you want to code refer to techcodeview.com>

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

приклад

Java




javascript оператор if

// Java Program to illustrate> // reading from text file> // as string in 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> >{> >String data = readFileAsString(> >'C:UserspankajDesktop est.java'>);> >System.out.println(data);> >}> }>

>

>

Вихід

If you want to code refer to techcodeview.com>