Различити начини читања текстуалне датотеке у Јави
У Јави постоји више начина за читање текстуалне датотеке у зависности од величине ваших података и случаја употребе. Тхе јава.ио и јава.нио.филе пакети обезбеди неколико класа за ефикасно руковање читањем датотека. Хајде да разговарамо о заједничким приступима један по један.
1. Коришћење класе БуффередРеадер
БуффередРеадер класа чита текст из тока знакова и баферује знакове за ефикасно читање. Често је омотан око а ФилеРеадер или ИнпутСтреамРеадер за побољшање перформанси.
Синтакса
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 ); } }
Излаз
Излаз 2. ФилеРеадер класа за читање текстуалне датотеке
Тхе ФилеРеадер цласс се користи за читање текстуалних датотека у Јави. Чита знакове из датотеке и погодан је за читање обичног текста. Конструктори ове класе претпостављају да су подразумевано кодирање знакова и подразумевана величина бафера бајтова одговарајући.
Конструктори дефинисани у овој класи су следећи:
- ФилеРеадер (датотека): Креира нови ФилеРеадер са датотеком за читање
- ФилеРеадер(ФилеДесцриптор фд): Креира нови ФилеРеадер који има ФилеДесцриптор за читање
- ФилеРеадер(Стринг филеНаме): Креира нови ФилеРеадер са именом датотеке за читање
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. Читање целе датотеке у листи
Можемо прочитати целу текстуалну датотеку у листу користећи Филес.реадАллЛинес() метода из јава.нио.филе пакет . Сваки ред у датотеци постаје један елемент на листи.
Синтакса
публиц статиц Лист реадАллЛинес(Патх патхЦхарсет цс) баца ИОЕкцептион
Овај метод препознаје следеће као терминаторе линије:
- у000Ду000А -> Царриаге Ретурн + Лине Феед
- у000А -> Лине Феед
- у000Д -> Царриаге Ретурн
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 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 ); } }
Излаз
Излаз