Bonjour,
Vraissemblablement un classique. J'ai une fonction qui m'écrit dans un Writer. J'ai une autre fonction qui doit lire ce contenu à l'aide d'un Reader.
Naïvement je fais :
Sauf que si le contenu a écrire est très volumineux, l'opération consomme beaucoup mémoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CharArrayWriter w = new CharArrayWriter(); f( w ); g( new CharArrayReader(w.toCharArray() ) );
L'autre solution que j'avais expérimenté est celle exploitant un pipe, illustré grossièrement comme ceci :
C'est pas mal car les deux fonctions travaillent en flux tendu, mais le thread de l'écrivain peut être délicat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 final PipedReader r = new PipedReader(); final PipedWriter w = new PipedWriter(r); new Runnable() { @Override public void run() { f(w); } }; g(r);
Avez-vous d'autres techniques sur le sujet ?
Thx.
Partager