Различни начини за четене на текстов файл в Java
В Java има множество начини за четене на текстов файл в зависимост от размера на вашите данни и случая на използване. The java.io и java.nio.file пакети осигурете няколко класа за ефективно четене на файлове. Нека обсъдим общите подходи един по един.
1. Използване на класа BufferedReader
BufferedReader клас чете текст от поток от знаци и буферира знаците за ефективно четене. Често се увива около a FileReader или InputStreamReader за подобряване на производителността.
Синтаксис
JavaBufferedReader в = нов BufferedReader(Четец в int размер);
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 (низ име на файл): Създава нов 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. Прочетете текстов файл като String
Можем да прочетем цял текстов файл като един низ в 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 ); } }
Изход
Изход