Table des matières
Le Tutoriel de Java StringReader
View more Tutorials:


La classe StringReader est utilisée pour lire une String sous forme d'un flux d'entrée de caractères (character input stream).

En règle générale, StringReader est une sous-classe de Reader. Il n'y a pas d'autres méthodes que les celles héritées de sa classe parente. Vous pouvez lire l'article à propos de Reader pour en savoir plus sur ces méthodes.
StringReader constructor
public StringReader(String s)
Exemple: lire un texte, lister les mots apparus dans le texte et le nombre d'occurrences de chaque mot.
- TODO Link?
StringReaderEx2.java
package org.o7planning.stringreader.ex;
import java.io.IOException;
import java.io.Reader;
import java.io.StreamTokenizer;
import java.io.StringReader;
import java.util.HashMap;
import java.util.Map;
public class StringReaderEx2 {
public static void main(String[] args) throws IOException {
String s = "Apple Apricots Apricots Blackberries Apple";
Reader reader = new StringReader(s);
StreamTokenizer tokenizer = new StreamTokenizer(reader); // StreamTokenizer(Reader)
// <String word, int count>
Map<String, Integer> wordsMap = new HashMap<>();
// Read and count the frequency for every word.
while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
if (tokenizer.ttype == StreamTokenizer.TT_WORD) {
int count;
if(wordsMap.containsKey(tokenizer.sval)) {
count = wordsMap.get(tokenizer.sval).intValue();
count++;
}
else {
count = 1;
}
wordsMap.put(tokenizer.sval, count);
}
}
wordsMap.forEach((word, count) -> {
System.out.println(word + " : " + count);
});
}
}
Output:
Apple : 2
Apricots : 2
Blackberries : 1
Exemple: Lire un texte avec plusieurs lignes, imprimer les lignes qui se terminent par "B" et ne commencent pas par "#" (ligne de commentaire).
StringReaderEx3.java
package org.o7planning.stringreader.ex;
import java.io.BufferedReader;
import java.io.Reader;
import java.io.StringReader;
public class StringReaderEx3 {
public static void main(String[] args) {
String students = //
"# Students:\n" //
+ "John P\n" //
+ "Sarah M\n" //
+ "# Sarah B\n" //
+ "Charles B\n" //
+ "Mary T\n" //
+ "Sophia B\n";
Reader reader = new StringReader(students);
BufferedReader br = new BufferedReader(reader);
br.lines() // return java.util.stream.Stream
.filter(s -> !s.trim().startsWith("#")) // Line not start with #
.filter(s -> s.endsWith("B")) // Line ends with B
.forEach(System.out::println);
}
}
Output:
Charles B
Sophia B