Il existe de nombreuses façons de lire un fichier texte en Java. Regardons les différentes méthodes de lecture de fichiers texte en Java une par une.
Java lire fichier texte
Il existe de nombreuses façons de lire un fichier texte en Java. Un fichier texte est composé de caractères, nous pouvons donc utiliser des classes Reader. Il existe également des classes utilitaires pour lire un fichier texte en Java.
- Java lire fichier texte en utilisant la classe Files
- Lire un fichier texte en Java en utilisant
FileReader
- Java lire fichier texte en utilisant BufferedReader
- Utiliser la classe Scanner pour lire un fichier texte en Java
Now let’s look at examples showing how to read a text file in java using these classes.
Lire un fichier texte en Java en utilisant java.nio.file.Files
Nous pouvons utiliser la classe Files pour lire tout le contenu d’un fichier dans un tableau d’octets. La classe Files a également une méthode pour lire toutes les lignes dans une liste de chaînes de caractères. La classe Files a été introduite dans Java 7 et c’est une bonne méthode si vous souhaitez charger tout le contenu du fichier. Vous devriez utiliser cette méthode uniquement lorsque vous travaillez sur de petits fichiers et que vous avez besoin de tout le contenu du fichier en mémoire.
String fileName = "/Users/pankaj/source.txt";
Path path = Paths.get(fileName);
byte[] bytes = Files.readAllBytes(path);
List<String> allLines = Files.readAllLines(path, StandardCharsets.UTF_8);
Lire un fichier texte en Java en utilisant java.io.FileReader
Vous pouvez utiliser FileReader pour obtenir BufferedReader et ensuite lire les fichiers ligne par ligne. FileReader ne prend pas en charge le codage et fonctionne avec le codage par défaut du système, donc ce n’est pas une façon très efficace de lire un fichier texte en Java.
String fileName = "/Users/pankaj/source.txt";
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
while((line = br.readLine()) != null){
//traiter la ligne
System.out.println(line);
}
Lire un fichier texte en Java en utilisant java.io.BufferedReader
La classe BufferedReader est utile si vous souhaitez lire un fichier ligne par ligne et les traiter. Elle est efficace pour le traitement des fichiers volumineux et prend également en charge le codage. BufferedReader est synchronisé, ce qui signifie que les opérations de lecture peuvent être effectuées en toute sécurité à partir de plusieurs threads. La taille de mémoire tampon par défaut de BufferedReader est de 8 Ko.
String fileName = "/Users/pankaj/source.txt";
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, cs);
BufferedReader br = new BufferedReader(isr);
String line;
while((line = br.readLine()) != null){
// traiter la ligne
System.out.println(line);
}
br.close();
Utilisation de Scanner pour lire un fichier texte en Java
Si vous souhaitez lire un fichier ligne par ligne ou en fonction d’une expression régulière Java, la classe Scanner est celle à utiliser. Scanner divise son entrée en jetons à l’aide d’un motif délimiteur, qui correspond par défaut aux espaces blancs. Les jetons résultants peuvent ensuite être convertis en valeurs de différents types à l’aide des différentes méthodes next. La classe Scanner n’est pas synchronisée et n’est donc pas thread-safe.
Path path = Paths.get(fileName);
Scanner scanner = new Scanner(path);
System.out.println("Read text file using Scanner");
// lire ligne par ligne
while(scanner.hasNextLine()){
// traiter chaque ligne
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
Exemple de lecture de fichier en Java
Voici la classe exemple montrant comment lire un fichier texte en Java. Les méthodes d’exemple utilisent Scanner, Files, BufferedReader avec prise en charge de l’encodage et FileReader.
package com.journaldev.files;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Scanner;
public class JavaReadFile {
public static void main(String[] args) throws IOException {
String fileName = "/Users/pankaj/source.txt";
//utilisation de la classe Files de Java 7 pour traiter de petits fichiers, obtenir les données complètes du fichier
readUsingFiles(fileName);
//utilisation de la classe Scanner pour les fichiers volumineux, pour lire ligne par ligne
readUsingScanner(fileName);
//lecture à l'aide de BufferedReader, pour lire ligne par ligne
readUsingBufferedReader(fileName);
readUsingBufferedReaderJava7(fileName, StandardCharsets.UTF_8);
readUsingBufferedReader(fileName, StandardCharsets.UTF_8);
//lecture à l'aide de FileReader, pas de support d'encodage, pas efficace
readUsingFileReader(fileName);
}
private static void readUsingFileReader(String fileName) throws IOException {
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
System.out.println("Reading text file using FileReader");
while((line = br.readLine()) != null){
//traiter la ligne
System.out.println(line);
}
br.close();
fr.close();
}
private static void readUsingBufferedReader(String fileName, Charset cs) throws IOException {
File file = new File(fileName);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis, cs);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.println("Read text file using InputStreamReader");
while((line = br.readLine()) != null){
//traiter la ligne
System.out.println(line);
}
br.close();
}
private static void readUsingBufferedReaderJava7(String fileName, Charset cs) throws IOException {
Path path = Paths.get(fileName);
BufferedReader br = Files.newBufferedReader(path, cs);
String line;
System.out.println("Read text file using BufferedReader Java 7 improvement");
while((line = br.readLine()) != null){
//traiter la ligne
System.out.println(line);
}
br.close();
}
private static void readUsingBufferedReader(String fileName) throws IOException {
File file = new File(fileName);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
System.out.println("Read text file using BufferedReader");
while((line = br.readLine()) != null){
//traiter la ligne
System.out.println(line);
}
//fermer les ressources
br.close();
fr.close();
}
private static void readUsingScanner(String fileName) throws IOException {
Path path = Paths.get(fileName);
Scanner scanner = new Scanner(path);
System.out.println("Read text file using Scanner");
//lire ligne par ligne
while(scanner.hasNextLine()){
//traiter chaque ligne
String line = scanner.nextLine();
System.out.println(line);
}
scanner.close();
}
private static void readUsingFiles(String fileName) throws IOException {
Path path = Paths.get(fileName);
//lire le fichier en tableau d'octets
byte[] bytes = Files.readAllBytes(path);
System.out.println("Read text file using Files class");
//lire le fichier en liste de chaînes de caractères
@SuppressWarnings("unused")
List allLines = Files.readAllLines(path, StandardCharsets.UTF_8);
System.out.println(new String(bytes));
}
}
Le choix d’utiliser un Scanner ou un BufferedReader ou Files pour lire un fichier dépend des besoins de votre projet. Par exemple, si vous voulez simplement enregistrer le fichier, vous pouvez utiliser Files et BufferedReader. Si vous cherchez à analyser le fichier en fonction d’un délimiteur, vous devriez utiliser la classe Scanner. Avant de conclure ce tutoriel, je tiens à mentionner RandomAccessFile
. Nous pouvons l’utiliser pour lire un fichier texte en Java.
RandomAccessFile file = new RandomAccessFile("/Users/pankaj/Downloads/myfile.txt", "r");
String str;
while ((str = file.readLine()) != null) {
System.out.println(str);
}
file.close();
C’est tout pour les programmes d’exemple de lecture de fichier texte en Java.
Source:
https://www.digitalocean.com/community/tutorials/java-read-text-file