logo

Различни начини за четене на текстов файл в Java

В Java има множество начини за четене на текстов файл в зависимост от размера на вашите данни и случая на използване. The java.io и java.nio.file пакети осигурете няколко класа за ефективно четене на файлове. Нека обсъдим общите подходи един по един.

1. Използване на класа BufferedReader

BufferedReader клас чете текст от поток от знаци и буферира знаците за ефективно четене. Често се увива около a FileReader или InputStreamReader за подобряване на производителността.

Синтаксис

BufferedReader в = нов BufferedReader(Четец в int размер);



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 (низ име на файл): Създава нов 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());  } } 


Изход

то е
Използване на 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. Прочетете текстов файл като String

Можем да прочетем цял текстов файл като един низ в Java. Това е полезно, когато искате да обработите съдържанието на файла като цяло, а не ред по ред.

Синтаксис:

валидни идентификатори в java

Низови данни = нов низ (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=Изход

Създаване на тест