- Comprendre l'usage des buffers et channels de JAVA NIO.
Ce TP vous demande:
- (Exercice 1) d'importer sur Eclipse (ou votre IDE favori) les projets que l'on utilisera pour tous les TPs de partie JAVA NIO,
- (Exercice 2) de réaliser un exercice de manipulation de fichiers pour assimiler l'usage des buffers et channels de JAVA NIO qui seront utilisés plus tard pour la communication sur le réseau,
- (Exercice 4) de démarer votre devoir maison,
- (Exercices 3 optionnel) et si vous avez le temps, de réaliser un autre exercice de manipulation de fichiers.
Commencez par cloner le projet csc4509-javanio
hébergé sur gitlabens:
Importez ce projet maven dans Eclipse (ou votre IDE favori). Pour Eclipse, il faut passer par le menu: File -> Import -> Maven -> Existing Maven Project
et ensuite naviguer jusqu'au répertoire racine du projet que vous venez de cloner.
Cet exercice consiste à afficher à l'écran le contenu d'un fichier du système
de fichier, un peu comme ce que fait la commande cat
.
Pour cela, compléter le code de classe CatFile
contenue dans le projet csc4509-1-file-javanio
en réalisant les étapes suivantes :
- ouvrir, en lecture seule, le fichier dont le nom est passé sur la ligne de commande,
- obtenir un canal associé à ce fichier,
-
obtenir un canal associé au fichier standard de
sortie
System.out
, -
allouer un
ByteBuffer
de 1024 octets, -
réaliser une boucle de lecture des octets du fichier dans le
ByteBuffer
et la réécriture de ces octets sur le fichier standard de sortie.
Il est possible d'obtenir un canal sur les Stream
qui sont déjà ouverts. La classe Channels
proposent deux méthodes de classes pour cela:
Pour obtenir un canal lié à System.out
on peut donc utiliser:
Cet exercice consiste à améliorer la version du programme de l'exercice précédent: en vous inspirant de l'étape précédente, réalisez le programme qui copie le contenu du fichier dont le nom est passé en premier argument dans le fichier dont le nom est passé en second argument.
Pour cela, compléter le code de classe CopyFile
contenue dans le projet csc4509-1-file-javanio
Testez votre programme avec un gros fichier (/vmlinuz ou /boot/vmlinuz par exemple) en vérifiant avec la commande cmp que la copie et l'original sont bien identiques.
Commencez l'étape 0 et l'étape 1 du devoir maison.
$Date: 2021-04-25 17:56:54 +0200 (dim. 25 avril 2021) $