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 : 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();
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