logo

Différentes façons de lire un fichier texte en Java

Il existe plusieurs façons d'écrire et de lire un fichier texte en Java. cela est nécessaire pour traiter de nombreuses applications. Il existe plusieurs façons de lire un fichier texte brut en Java, par ex. vous pouvez utiliser FileReader, BufferedReader ou Scanner pour lire un fichier texte. Chaque utilitaire fournit quelque chose de spécial, par ex. BufferedReader fournit une mise en mémoire tampon des données pour une lecture rapide, et Scanner offre une capacité d'analyse.

Méthodes :



  1. En utilisant Classe BufferedReader
  2. En utilisant Classe de scanner
  3. Utilisation de la classe File Reader
  4. Lire l'intégralité du fichier dans une liste
  5. Lire un fichier texte sous forme de chaîne

Nous pouvons également utiliser à la fois BufferReader et Scanner pour lire un fichier texte ligne par ligne en Java. Ensuite, Java SE 8 introduit une autre classe Stream java.util.stream.Stream qui fournit un moyen paresseux et plus efficace de lire un fichier.

Remarque : Les pratiques d'écriture de bon code telles que le vidage/fermeture des flux, la gestion des exceptions, etc., ont également été évitées pour une meilleure compréhension des codes par les débutants.

Discutons de chacune des méthodes ci-dessus plus en profondeur et surtout en les implémentant via un programme Java propre.



1. Classe BufferedReader pour la lecture d'un fichier texte

Cette méthode lit le texte à partir d’un flux de saisie de caractères. Il effectue un tampon pour une lecture efficace des caractères, des tableaux et des lignes. La taille du tampon peut être spécifiée ou la taille par défaut peut être utilisée. La valeur par défaut est suffisamment grande pour la plupart des utilisations. En général, chaque requête de lecture effectuée auprès d'un lecteur entraîne l'émission d'une requête de lecture correspondante du flux de caractères ou d'octets sous-jacent. Il est donc conseillé d'envelopper un BufferedReader autour de tout Reader dont les opérations read() peuvent être coûteuses, tels que FileReaders et InputStreamReaders, comme indiqué ci-dessous :

Syntaxe

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

Exemple



Java


bouton central en CSS



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

>

>

Sortir

If you want to code refer to techcodeview.com>

2. Classe FileReader pour la lecture d'un fichier texte

Classe pratique pour lire des fichiers de personnages. Les constructeurs de cette classe supposent que le codage des caractères par défaut et la taille du tampon d'octets par défaut sont appropriés.

Les constructeurs définis dans cette classe sont les suivants :

    FileReader(File file) : Crée un nouveau FileReader, étant donné le fichier à lire depuis FileReader(FileDescriptor fd) : Crée un nouveau FileReader, étant donné le FileDescriptor à lire depuis FileReader(String fileName) : Crée un nouveau FileReader, étant donné le nom du fichier à lire

Exemple

Java




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

>

graphique d'allocation des ressources

>

Sortir

If you want to code refer to techcodeview.com>

3. Classe de scanner pour lire un fichier texte

Un simple scanner de texte capable d'analyser les types primitifs et les chaînes à l'aide d'expressions régulières. Un scanner divise son entrée en jetons à l'aide d'un modèle de délimiteur, qui correspond par défaut aux espaces. Les jetons résultants peuvent ensuite être convertis en valeurs de différents types en utilisant les différentes méthodes suivantes.

Exemple 1: Avec l'utilisation de boucles

Java




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

>

>

Sortir

If you want to code refer to techcodeview.com>

Exemple 2 : Sans utiliser de boucles

Java




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

>

concaténer une chaîne Java

>

Sortir

If you want to code refer to techcodeview.com>

4. Lire l'intégralité du fichier dans une liste

Lire toutes les lignes d'un fichier. Cette méthode garantit que le fichier est fermé lorsque tous les octets ont été lus ou qu'une erreur d'E/S ou une autre exception d'exécution est levée. Les octets du fichier sont décodés en caractères à l'aide du jeu de caractères spécifié.

Syntaxe:

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

Cette méthode reconnaît les éléments suivants comme terminateurs de ligne :

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

Exemple

Java




comment bloquer les publicités YouTube sur Android
// 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());> >}> }>

>

>

Sortir

If you want to code refer to techcodeview.com>

5. Lire un fichier texte sous forme de chaîne

Exemple

Java




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

>

>

Sortir

If you want to code refer to techcodeview.com>