Recherche…


Introduction

Les lecteurs et les enregistreurs et leurs sous-classes respectives fournissent des E / S simples pour les données textuelles / basées sur des caractères.

BufferedReader

introduction

La classe BufferedReader est un wrapper pour les autres classes Reader qui remplit deux fonctions principales:

  1. Un BufferedReader fournit une mémoire tampon pour le Reader . Cela permet à une application de lire les caractères un par un sans surcharger les E / S.

  2. Un BufferedReader fournit des fonctionnalités permettant de lire du texte ligne par ligne.

Notions de base sur l'utilisation d'un BufferedReader

Le schéma normal d'utilisation d'un BufferedReader est le suivant. Tout d'abord, vous obtenez le Reader dont vous souhaitez lire les caractères. Ensuite, vous instanciez un BufferedReader qui encapsule le Reader . Ensuite, vous lisez les données de caractères. Enfin, vous fermez le BufferedReader qui ferme le lecteur `enveloppé. Par exemple:

File someFile = new File(...);
int aCount = 0;
try (FileReader fr = new FileReader(someFile);
     BufferedReader br = new BufferedReader(fr)) {
    // Count the number of 'a' characters.
    int ch;
    while ((ch = br.read()) != -1) {
        if (ch == 'a') {
            aCount++;
        }
    }
    System.out.println("There are " + aCount + " 'a' characters in " + someFile);
}

Vous pouvez appliquer ce modèle à n'importe quel Reader

Remarques:

  1. Nous avons utilisé Java 7 (ou ultérieur) avec des ressources pour garantir que le lecteur sous-jacent est toujours fermé. Cela évite une fuite potentielle de ressources. Dans les versions antérieures de Java, vous fermiez explicitement BufferedReader dans un bloc finally .

  2. Le code à l'intérieur du bloc try est pratiquement identique à ce que nous utiliserions si nous FileReader directement à partir de FileReader . En fait, un BufferedReader fonctionne exactement comme le Reader qu'il encapsule. La différence est que cette version est beaucoup plus efficace.

La taille du tampon BufferedReader

La méthode BufferedReader.readLine ()

Exemple: lecture de toutes les lignes d'un fichier dans une liste

Cela se fait en extrayant chaque ligne d'un fichier et en l'ajoutant à une List<String> . La liste est alors renvoyée:

public List<String> getAllLines(String filename) throws IOException {
    List<String> lines = new ArrayList<String>();
    try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
        String line = null;
        while ((line = reader.readLine) != null) {
            lines.add(line);
        }
    }
    return lines;
}

Java 8 fournit un moyen plus concis de le faire en utilisant la méthode lines() :

public List<String> getAllLines(String filename) throws IOException {
    try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
        return br.lines().collect(Collectors.toList());
    }
    return Collections.empty();
}

Exemple StringWriter

La classe Java StringWriter est un flux de caractères qui collecte la sortie du tampon de chaîne, qui peut être utilisé pour créer une chaîne.

La classe StringWriter étend la classe Writer.

Dans la classe StringWriter, les ressources système telles que les sockets réseau et les fichiers ne sont pas utilisées. Par conséquent, la fermeture de StringWriter n'est pas nécessaire.

import java.io.*;  
public class StringWriterDemo {  
    public static void main(String[] args) throws IOException {  
        char[] ary = new char[1024];  
        StringWriter writer = new StringWriter();  
        FileInputStream input = null;  
        BufferedReader buffer = null;  
        input = new FileInputStream("c://stringwriter.txt");  
        buffer = new BufferedReader(new InputStreamReader(input, "UTF-8"));  
        int x;  
        while ((x = buffer.read(ary)) != -1) {  
                   writer.write(ary, 0, x);  
        }  
        System.out.println(writer.toString());        
        writer.close();  
        buffer.close();  
    }  
}

L'exemple ci-dessus nous aide à connaître un exemple simple de StringWriter utilisant BufferedReader pour lire des données de fichier à partir du flux.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow