logo

Различити начини читања текстуалне датотеке у Јави

У Јави постоји више начина за читање текстуалне датотеке у зависности од величине ваших података и случаја употребе. Тхе јава.ио и јава.нио.филе пакети обезбеди неколико класа за ефикасно руковање читањем датотека. Хајде да разговарамо о заједничким приступима један по један.

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);  } } 


Излаз

УсингБуфферРеадер' title=Излаз

2. ФилеРеадер класа за читање текстуалне датотеке

Тхе ФилеРеадер цласс се користи за читање текстуалних датотека у Јави. Чита знакове из датотеке и погодан је за читање обичног текста. Конструктори ове класе претпостављају да су подразумевано кодирање знакова и подразумевана величина бафера бајтова одговарајући. 

Конструктори дефинисани у овој класи су следећи:

  • ФилеРеадер (датотека): Креира нови ФилеРеадер са датотеком за читање
  • ФилеРеадер(ФилеДесцриптор фд): Креира нови ФилеРеадер који има ФилеДесцриптор за читање
  • ФилеРеадер(Стринг филеНаме): Креира нови ФилеРеадер са именом датотеке за читање
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);  } } 


Излаз

УсингФилеРеадер' 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());  } } 


Излаз

уланчавање унапред
УсингБуфферРеадер' 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. Читање целе датотеке у листи

Можемо прочитати целу текстуалну датотеку у листу користећи Филес.реадАллЛинес() метода из јава.нио.филе пакет . Сваки ред у датотеци постаје један елемент на листи.

Синтакса

публиц статиц Лист реадАллЛинес(Патх патхЦхарсет цс) баца ИОЕкцептион

Овај метод препознаје следеће као терминаторе линије: 

  • у000Ду000А -> Царриаге Ретурн + Лине Феед
  • у000А -> Лине Феед
  • у000Д -> Царриаге Ретурн
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());  } } 


Излаз

РеадФилеИнтоЛист' loading='lazy' title=Излаз

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);  } } 

Излаз

РеадТектАсСтринг' loading='lazy' title=Излаз

Креирај квиз