:: Enseignements :: Master :: M1 :: 2010-2011 :: Programmation d'Applications Réseaux ::
[LOGO]

ByteBuffer, DatagramChannels


Exercice 1 - Longue Somme de Long ByteBuffer

Exercice 2 - Transcode moi

On souhaite écrire la classe FileTranscoder qui effectue la conversion de fichier d'un jeu de caractères à 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. Si le fichier source indiqué est un tiret, nous lisons sur l'entrée standard (même remarque pour le fichier destination - qui implique d'écrire sur la sortie standard).

  1. 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.
  2. En supposant que les fichiers soient 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.
  3. Utilisez les méthodes decode(ByteBuffer, CharBuffer, boolean) et encode(CharBuffer, ByteBuffer, boolean) dans une boucle de décodage - encodage.
  4. 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 $.