:: Enseignements :: ESIPE :: E4INFO :: 2010-2011 :: Applications réseaux ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
ByteBuffer, DatagramChannels
|
Exercice 1 - Longue Somme de Long ByteBuffer
-
Refaire l'exercice 1 du TD précédent (avec le serveur multi-client)
en utilisant des ByteBuffer plutôt que des tableaux de bytes et
vos fonctions de conversion entre byte[] et long,
ainsi que des DatagramChannel.
Exercice 2 - Transcode moi
On souhaite écrire la classe FileTranscoder qui effectue
la conversion de fichier d'un charset à un autre :
java FileTranscoder srcFile.txt UTF-8 dstFile.txt ISO-8859-1
Dans cet exemple, le transcoder lit le fichier srcFile.txt qui est écrit
en UTF-8 et transforme celui-ci en ISO-8859-1
dans le fichier créé de nom dstFile.txt.
-
Vous utiliserez des FileChannel pour lire et écrire dans les
fichiers. Utiliser la classe java.nio.charset.Charset pour obtenir
les charsets puis créer l'encodeur ou le décodeur correspondant.
-
En supposant que les fichiers sont suffisament petits
pour "tenir" dans un ByteBuffer, utilisez les méthodes
decode(ByteBuffer) et encode(CharBuffer).
Que se passe t il si le fichier est trop gros ?
Testez avec de petits buffers.
-
Utilisez les méthodes decode(ByteBuffer, CharBuffer, boolean)
et encode(CharBuffer, ByteBuffer, boolean)
dans une boucle de décodage - encodage.
-
Ajoutez des caractères "unmappable" dans le fichier d'entrée.
Que se passe t-il par defaut ? Faites une version où une exception est
levée, puis une version où le caractère non valide est remplacé par un
$.
© Université de Marne-la-Vallée