Méthode newBufferedReader() de java.nio.file.Files en Java
java.nio.file.Files.newBufferedReader()est une méthode très pratique du package Java NIO (New Input/Output), utilisée pour lire efficacement des fichiers texte. Elle se trouve dansjava.nio.filele package, et fait partie des améliorations d'E/S de fichiers introduites dans Java 7.
L'objectif principal de la méthode newBufferedReader() est de créer unBufferedReaderobjet, utilisé pour lire efficacement le contenu textuel du fichier situé au chemin spécifié. Comparé au traditionnelFileReaderil offre de meilleures performances car il utilise un mécanisme de mise en mémoire tampon.
Définition de méthode
FilesLa classe fournit deux méthodes surchargéesnewBufferedReaderméthodes :
public static BufferedReader newBufferedReader(Path path, Charset charset) throws IOException
Description du paramètre
path: le chemin du fichier à lire, de typejava.nio.file.Pathcharset(facultatif) : le jeu de caractères utilisé pour décoder le fichier, de typejava.nio.charset.Charset
Valeur de retour
Retourne un nouveauBufferedReaderobjet qui peut être utilisé pour lire le contenu du fichier.
Exceptions
IOException: si une erreur d'E/S se produit lors de l'ouverture du fichierSecurityException: si un gestionnaire de sécurité existe et refuse l'accès au fichier
Exemples d'utilisation de la méthode
Utilisation de base
Exemple
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileReaderExample {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
try (BufferedReader reader = Files.newBufferedReader(path)) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Spécifier le jeu de caractères
Exemple
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileReaderWithCharset {
public static void main(String[] args) {
Path path = Paths.get("example.txt");
try (BufferedReader reader = Files.newBufferedReader(path, StandardCharsets.UTF_8)) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Caractéristiques et avantages de la méthode
Mécanisme de mise en mémoire tampon
newBufferedReader()Le crééBufferedReaderutilise un tampon interne, ce qui signifie :
- Moins d'opérations d'E/S réelles
- Performances améliorées lors de la lecture de grandes quantités de données texte
- Adapté à la lecture de fichiers volumineux
Gestion automatique des ressources
Lorsqu'il est utilisé avec une instruction try-with-resources (comme dans l'exemple ci-dessus),BufferedReaderest automatiquement fermé sans qu'il soit nécessaire d'appeler manuellementclose()méthode.
Prise en charge des jeux de caractères
Vous pouvez spécifier un jeu de caractères pour lire correctement des fichiers texte avec différents encodages, en évitant les caractères illisibles.
Notes
Vérification de l'existence d'un fichier
Avant d'appelernewBufferedReader()vous pouvez utiliserFiles.exists(path)pour vérifier si le fichier existe :
Exemple
// Lire le fichier
} else {
System.out.println("Le fichier n'existe pas");
}
Considérations de performance
Pour les fichiers très volumineux, la lecture ligne par ligne (readLine()) peut ne pas être la méthode la plus efficace. Dans ce cas, envisagez d'utiliserFiles.lines()méthode, qui renvoie unStream<String>, qui peut tirer parti du traitement parallèle pour améliorer les performances.
5.3 Gestion des exceptions
Toujours gérer correctementIOException, en particulier dans les environnements de production. L'exemple ci-dessus utilise un simpleprintStackTrace(); dans les applications réelles, une logique de gestion des erreurs plus détaillée peut être nécessaire.
Comparaison avec d'autres méthodes
Comparaison avec le FileReader traditionnel
Exemple
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
// méthode NIO
BufferedReader reader = Files.newBufferedReader(Paths.get("file.txt"));
Avantages de l'approche NIO :
- API plus concise
- Meilleure gestion des exceptions
- Prend en charge les objets Path, plus compatible avec les autres opérations NIO
Comparaison avec Files.readAllLines()
Files.readAllLines()lit toutes les lignes en mémoire en une seule fois, adapté aux petits fichiers. En revanche,newBufferedReader()convient au traitement de fichiers volumineux ligne par ligne.
Résumé
java.nio.file.Files.newBufferedReader()est une méthode puissante et flexible pour lire efficacement des fichiers texte. Elle combine les avantages des E/S tamponnées avec la conception moderne de l'API de NIO, ce qui en fait l'une des méthodes privilégiées pour lire des fichiers texte en Java.
Points clés :
- Utilise la mise en mémoire tampon pour améliorer les performances de lecture
- Prend en charge la spécification d'un jeu de caractères pour éviter les problèmes d'encodage
- À utiliser avec try-with-resources pour garantir la libération des ressources
- Adapté au traitement de fichiers texte volumineux
En développement réel, choisissez la variante de méthode appropriée en fonction des besoins spécifiques, et veillez toujours à la gestion des exceptions et des ressources.
Autres extensions
Java java.nio.file.Files