Різні способи читання текстового файлу в Java
У Java є кілька способів прочитати текстовий файл залежно від розміру даних і варіанту використання. The java.io і пакети java.nio.file надати кілька класів для ефективного читання файлів. Давайте обговоримо загальні підходи один за іншим.
1. Використання класу BufferedReader
BufferedReader клас читає текст із потоку символів і буферизує символи для ефективного читання. Його часто обертають навколо a FileReader або InputStreamReader для покращення продуктивності.
Синтаксис
JavaBufferedReader in = new BufferedReader(Reader int size);
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 ); } }
Вихід
Вихід 2. Клас FileReader для читання текстового файлу
The Клас FileReader використовується для читання текстових файлів у Java. Він читає символи з файлу та підходить для читання звичайного тексту. Конструктори цього класу припускають, що стандартне кодування символів і розмір байтового буфера за замовчуванням є відповідними.
Конструктори, визначені в цьому класі, такі:
- FileReader (файл файлу): Створює новий FileReader із заданим файлом для читання
- FileReader(FileDescriptor fd): Створює новий FileReader із заданим FileDescriptor для читання
- FileReader (String fileName): Створює новий FileReader із назвою файлу для читання
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 ); } }
Вихід
Вихід 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 ()); } }
Вихід
Вихід приклад 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 ()); } }
Вихід
Вихід 4. Читання всього файлу в списку
Ми можемо прочитати весь текстовий файл у список за допомогою Files.readAllLines() метод від пакет java.nio.file . Кожен рядок у файлі стає одним елементом у списку.
Синтаксис
public static List readAllLines(Path pathCharset cs)викидає IOException
Цей метод розпізнає наступне як термінатори рядка:
- u000Du000A -> Повернення каретки + Переведення рядка
- u000A -> Перехід рядка
- u000D -> Повернення каретки
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 ()); } }
Вихід
Вихід 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 ); } }
Вихід
Вихід