logo

Různé způsoby čtení textového souboru v Javě

V Javě existuje několik způsobů psaní a čtení textového souboru. to je vyžadováno při práci s mnoha aplikacemi. Existuje několik způsobů, jak číst prostý textový soubor v Javě, např. ke čtení textového souboru můžete použít FileReader, BufferedReader nebo Scanner. Každá utilita poskytuje něco speciálního, např. BufferedReader poskytuje ukládání dat do vyrovnávací paměti pro rychlé čtení a skener poskytuje schopnost analýzy.

Metody:



  1. Použitím Třída BufferedReader
  2. Použitím Třída skeneru
  3. Použití třídy File Reader
  4. Čtení celého souboru v seznamu
  5. Číst textový soubor jako řetězec

Můžeme také použít BufferReader a Scanner ke čtení textového souboru řádek po řádku v Javě. Poté Java SE 8 představuje další třídu Stream java.util.stream.Stream který poskytuje líný a efektivnější způsob čtení souboru.

Tip Poznámka: Praktiky psaní dobrého kódu, jako je proplachování/uzavírání proudů, zpracování výjimek atd., se pro lepší porozumění kódům vyhýbaly také začátečníkům.

Pojďme diskutovat o každé z výše uvedených metod do hlubší hloubky a především jejich implementací prostřednictvím čistého programu Java.



1. Třída BufferedReader pro čtení textového souboru

Tato metoda čte text z proudu znakového vstupu. Vytváří vyrovnávací paměť pro efektivní čtení znaků, polí a řádků. Velikost vyrovnávací paměti může být specifikována nebo může být použita výchozí velikost. Výchozí hodnota je dostatečně velká pro většinu účelů. Obecně platí, že každý požadavek na čtení provedený čtečkou způsobí, že bude vzat odpovídající požadavek na čtení základního znakového nebo bytového toku. Je proto vhodné zabalit BufferedReader kolem jakéhokoli Readeru, jehož operace read() mohou být nákladné, jako jsou FileReaders a InputStreamReaders, jak je uvedeno níže:

Syntax

BufferedReader in = new BufferedReader(Reader in, int size);>

Příklad



Jáva


char na řetězec v jazyce Java



// Java Program to illustrate Reading from FileReader> // using BufferedReader Class> // Importing input output classes> import> java.io.*;> // Main class> public> class> GFG {> >// main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// File path is passed as parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >// Note: Double backquote is to avoid compiler> >// interpret words> >// like est as (ie. as a escape sequence)> >// Creating an object of BufferedReader class> >BufferedReader br> >=>new> BufferedReader(>new> FileReader(file));> >// Declaring a string variable> >String st;> >// Condition holds true till> >// there is character in a string> >while> ((st = br.readLine()) !=>null>)> >// Print the string> >System.out.println(st);> >}> }>

>

>

Výstup

If you want to code refer to techcodeview.com>

2. Třída FileReader pro čtení textového souboru

Třída pohodlí pro čtení znakových souborů. Konstruktoři této třídy předpokládají, že výchozí kódování znaků a výchozí velikost bajtové vyrovnávací paměti jsou vhodné.

Konstruktory definované v této třídě jsou následující:

    FileReader(File file): Vytvoří nový FileReader s daným souborem ke čtení z FileReader(FileDescriptor fd): Vytvoří nový FileReader s daným FileDescriptor ke čtení z FileReader(String fileName): Vytvoří nový FileReader, daným názvem souboru soubor ke čtení

Příklad

Jáva




// Java Program to Illustrate reading from> // FileReader using FileReader class> // Importing input output classes> import> java.io.*;> // Main class> // ReadingFromFile> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)>throws> Exception> >{> >// Passing the path to the file as a parameter> >FileReader fr =>new> FileReader(> >'C:UserspankajDesktop est.txt'>);> >// Declaring loop variable> >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);> >}> }>

jak otevřít soubor json
>

>

Výstup

If you want to code refer to techcodeview.com>

3. Třída skeneru pro čtení textového souboru

Jednoduchý textový skener, který dokáže analyzovat primitivní typy a řetězce pomocí regulárních výrazů. Skener rozděluje svůj vstup na tokeny pomocí oddělovacího vzoru, který ve výchozím nastavení odpovídá mezerám. Výsledné tokeny pak mohou být převedeny na hodnoty různých typů pomocí různých dalších metod.

Příklad 1: S použitím smyček

Jáva




// Java Program to illustrate> // reading from Text File> // using Scanner Class> import> java.io.File;> import> java.util.Scanner;> public> class> ReadFromFileUsingScanner {> >public> static> void> main(String[] args)>throws> Exception> >{> >// pass the path to the file as a parameter> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >while> (sc.hasNextLine())> >System.out.println(sc.nextLine());> >}> }>

>

>

Výstup

If you want to code refer to techcodeview.com>

Příklad 2: Bez použití smyček

Jáva




// Java Program to illustrate reading from FileReader> // using Scanner Class reading entire File> // without using loop> import> java.io.File;> import> java.io.FileNotFoundException;> import> java.util.Scanner;> public> class> ReadingEntireFileWithoutLoop {> >public> static> void> main(String[] args)> >throws> FileNotFoundException> >{> >File file =>new> File(> >'C:UserspankajDesktop est.txt'>);> >Scanner sc =>new> Scanner(file);> >// we just need to use  as delimiter> >sc.useDelimiter(>''>);> >System.out.println(sc.next());> >}> }>

pojmenování podle java konvencí

>

>

Výstup

If you want to code refer to techcodeview.com>

4. Čtení celého souboru v seznamu

Přečtěte si všechny řádky ze souboru. Tato metoda zajišťuje, že se soubor zavře, když jsou přečteny všechny bajty nebo je vyvolána chyba I/O nebo jiná výjimka za běhu. Bajty ze souboru jsou dekódovány na znaky pomocí zadané znakové sady.

Syntax:

public static List readAllLines(Path path,Charset cs)throws IOException>

Tato metoda rozpoznává jako zakončení čáry následující:

u000D followed by u000A, CARRIAGE RETURN followed by LINE FEED u000A, LINE FEED u000D, CARRIAGE RETURN>

Příklad

Jáva


diskrétní matematická negace



// Java program to illustrate reading data from file> // using nio.File> import> java.io.*;> import> java.nio.charset.StandardCharsets;> import> java.nio.file.*;> import> java.util.*;> public> class> ReadFileIntoList {> >public> static> List> >readFileInList(String fileName)> >{> >List lines = Collections.emptyList();> >try> {> >lines = Files.readAllLines(> >Paths.get(fileName),> >StandardCharsets.UTF_8);> >}> >catch> (IOException e) {> >// do something> >e.printStackTrace();> >}> >return> lines;> >}> >public> static> void> main(String[] args)> >{> >List l = readFileInList(> >'C:UserspankajDesktop est.java'>);> >Iterator itr = l.iterator();> >while> (itr.hasNext())> >System.out.println(itr.next());> >}> }>

>

>

Výstup

If you want to code refer to techcodeview.com>

5. Číst textový soubor jako řetězec

Příklad

Jáva




// Java Program to illustrate> // reading from text file> // as string in 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> >{> >String data = readFileAsString(> >'C:UserspankajDesktop est.java'>);> >System.out.println(data);> >}> }>

>

>

Výstup

If you want to code refer to techcodeview.com>