Modification de charset à la volée.
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 :
Code:
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(); |
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).
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