"Salut, Amigo, encore une fois."
"Bonjour à toi, Rishi. De quoi va parler la leçon d'aujourd'hui ?"
"Aujourd'hui, je vais vous parler de Reader et Writer."
« Mais, Rishi, je sais déjà presque tout sur eux !
"La répétition est la mère de l'apprentissage."
"Hmm. Eh bien, d'accord."
" Reader et Writer sont analogues à InputStream et OutputStream , mais ils fonctionnent avec des caractères, pas des octets. Parfois, ils sont également appelés flux de caractères, par opposition à InputStream et OutputStream , qui sont appelés flux d'octets."
"L'un est pour les caractères, l'autre pour les octets. Je m'en souviens."
"Il n'y a pas que ça. Ces classes sont spécialement conçues pour fonctionner avec du texte et des chaînes. Aujourd'hui, nous allons examiner deux implémentations classiques de ces classes abstraites : FileReader et FileWriter ."
"Voici les méthodes de la classe FileReader :"
Méthode | Description |
---|---|
int read() |
Lit un caractère du flux et le renvoie. |
int read(char cbuf[], int offset, int length) |
Lit un tableau de caractères, renvoie le nombre de caractères lus. |
boolean ready() |
Renvoie vrai s'il est possible de lire à partir du flux. |
void close() |
Ferme le flux d'entrée. |
int read(java.nio.CharBuffer target) |
Lit un ensemble de caractères dans un tampon. |
int read(char cbuf[]) |
Lit un tableau de caractères. |
long skip(long n) |
Saute n caractères dans le flux. |
String getEncoding() |
Renvoie l'encodage actuel du flux. |
"Eh bien, je sais presque tout cela. Mais qu'en est-il de FileWriter?"
Méthode | Description |
---|---|
void write(int c) |
Écrit un caractère dans le flux. |
void write(char cbuf[], int off, int len) |
Écrit un tableau de caractères dans le flux. |
void write(char cbuf[]) |
Écrit un tableau de caractères dans le flux. |
void write(String str, int off, int len) |
Écrit une partie d'une chaîne dans le flux. |
void write(String str) |
Écrit une chaîne dans le flux. |
void flush() |
Écrit tout ce qui est mis en cache en mémoire sur le disque. |
void close() |
Ferme le flux. |
String getEncoding() |
Renvoie l'encodage actuel du flux. |
"Je sais que!"
"C'est merveilleux. Alors regardons un exemple intéressant, et plus tard Diego vous donnera plus de tâches."
« Comment lit-on un fichier ligne par ligne ? Pouvez-vous écrire le code ? »
"Facile, regarde :"
// Create a list for storing the lines
List<String> list = new ArrayList<String>();
// Open the file
File file = new File("c:/document.txt");
BufferedReader reader = new BufferedReader(new FileReader(file));
// As long as the file isn't empty, read from it
while (reader.ready())
{
list.add(reader.readLine());
}
// Close the file
reader.close();
"Hmm. Pas mal."
"Pas mal ? Tout est simple et beau. Avouez-le, Rishi, j'ai déjà une excellente maîtrise des threads d'E/S. Alors qu'est-ce qui pourrait être amélioré ici ?"
"Eh bien, par exemple, vous pourriez faire ceci :"
File file = new File("c:/document.txt");
List list = Files.readAllLines(file.toPath(), Charset.defaultCharset());
"Hmm. C'est plus court. Et aujourd'hui même, tu m'as parlé de toutes ces méthodes. Je vais retravailler. Merci pour la leçon, Rishi."
"Bonne chance Amigo."
GO TO FULL VERSION