:: Enseignements :: Licence :: L3 :: 2012-2013 :: Programmation Objet avec Java ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) |
Liste, itérateur, Path et Files.
|
Exercice 1 - Very bad code
Le code ci-dessus a été écrit sur le toit d'un immeuble de Las Vegas, bien sûr, il ne marche pas.
public class VeryBadCode {
private static ArrayList<String> findOptions(ArrayList<String> argumentList) {
ArrayList<String> optionList = new ArrayList<>();
for(String arg: argumentList) {
if (!arg.startsWith("-")) {
continue;
}
optionList.add(arg);
argumentList.remove(arg); // here, lies a dragon
}
return optionList;
}
public static void main(String[] args) {
ArrayList<String> argumentList = new ArrayList<>();
Collections.addAll(argumentList, args);
ArrayList<String> optionList = findOptions(argumentList);
}
}
-
Indiquer quelles sont les arguments que l'on doit passer au programme pour qu'il plante ?
Expliquer le problème.
-
Comment corriger le problème ?
Modifier le code.
Note: il doit faire ce qui était prévu. Supprimer tout le code supprime aussi le problème mais ne le résoud pas !
-
Expliquer pourquoi la méthode findOptions ne devrait pas retourner une ArrayList ni même une List ?
Que devrait elle retourner à la place ?
-
Expliquer pourquoi la méthode findOptions ne doit pas retourner une collection de String ?
Quelle est le problème avec les String ?
Que devrait elle retourner à la place ?
Exercice 2 - Répertoire et répertoires
Où notre vaillant héro apprend comment lister les fichiers d'un répertoire.
-
Que représente la classe java.nio.file.Path et à quoi sert la classe java.nio.file.Files ?
-
Comment fait-on pour créer un Path à partir d'une String ?
-
Ecrire le code qui permet d'afficher les fichiers du répertoire courant.
Il existe une méthode Files.newDirectoryStream et l'interface DirectoryStream hétite de Iterable.
-
A quoi sert la méthode close de DirectoryStream?
Modifier votre code en conséquence.
-
A quoi sert la syntaxe du langage Java try/finally ?
Modifier votre code en conséquence.
-
A quoi sert la syntaxe du langage Java try-with-resources ?
Modifier votre code en conséquence.
Exercice 3 - Service de voyeur (traduction peu officiel)
On souhaite savoir si les fichiers d'un repertoire sont créés, modifiés ou détruit.
Pour cela, nous allons utiliser l'interface java.nio.file.WatchService.
-
Comment créer un WatchService (RTFM) et
comment enregistrer un répertoire dans un WatchService (RTFM again) ?
-
Qu'est ce qu'une WatchKey et à quoi servent les méthodes pollEvents et reset ?
Quelles sont les types standards de WachEvent que l'on peut rencontrer ?
-
Ecrire un code qui surveille le répertoire courant et affiche les évènements envoyés par
le WatchService ainsi que les fichiers liés à ces évènements.
-
A quoi correspond le type d'évènement OVERFLOW ?
Que peut-on faire dans ce cas ?
Exercice 4 - Parcours récursif [à la maison]
Il existe dans la classe java.nio.file.Files une méthode walkFileTree
qui permet de parcourir récursivement des répertoires.
-
Ecrire un programme qui affiche tous les fichiers et répertoires du répertoire courant récursivement
en utilisant la méthode walkFileTree.
-
A quoi sert la classe BasicFileAttributes ?
Modifier votre programme pour afficher la taille des fichiers ainsi que leur dernière date de modification.
Note: le nombre de milliseconde depuis epoch n'étant pas super lisible pour un utilisateur,
il existe en Java la classe java.util.Date.
© Université de Marne-la-Vallée