Bonjour,
j'ai une application utilisant actuellement un BufferedReader avec un charset par défaut. Je voudrais pouvoir modifier à la volée le charset employé, alors que le flux fonctionne encore.
Apparemment, ce genre de code (de lecteur) foire assez bien :
J'obtiens d'abord bien la première ligne (ici d'une dizaine de caractères). Ensuite, j'obtiens la fin de la ligne contenant le 8.193e caractère (8ko étant +/- la taille du buffer employé, selon mes estimations).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 // L'exemple est avec un fichier, mais l'application fonctionnera avec des flux de toutes sortes : fichiers, sockets, ... InputStream is = new FileInputStream("test.txt") ; BufferedReader br1 = new BufferedReader( new InputStreamReader(is, MON_ANCIEN_CHARSET) ); br1.readLine(); BufferedReader br2 = new BufferedReader( new InputStreamReader(is, MON_NOUVEAU_CHARSET) ); br2.readLine();
Pour un écrivain, c'est plus facile et ça marche, à condition de flusher après chaque écriture.
Et en prime, si c'était possible de me dire comment faire la même chose avec les NIO, ça serait le panard.
D'avance, merci
Olivier
Partager