C. Recanati
InHM Java 
Master 1, 2012

TP 3

Exercice 1 Implémenter la classe abstraite Benchmark du cours.

Exercice 2 le but de cet exercice est de tester et vérifier des objets de classe File.
1) Ecrire une classe Test  
- qui crée un objet  File intitulé monRep  avec l’instruction
File monRep = new File («.../usr/.../adresse/...») ;
- puis teste et imprime s’il s’agit bien d’un nom de répertoire.
Ensuite  cette classe crée un nouvel objet de type File avec
	File monFichier = new File (monRep,«fichier.java») ;
imprime  si ce fichier existe, si on peut le lire, et si on peut écrire dedans.
2) Ecrire une classe permettant d’obtenir la liste de tous les fichiers d’un répertoire donné par son nom et d’afficher la date de leur dernière modification.
3) Modifier le code précédent pour que l’application lise le nom du répertoire et celui du fichier à vérifier en argument au programme.
  Utiliser les méthodes getAbsolutePath, getName et getParent pour imprimer les informations sur le répertoire initial. Récupérer ensuite un tableau contents de File avec la méthode listFiles  et  imprimer les éléments de ce tableau en indiquant à chaque fois s’il s’agit ou non d’un répertoire, et en donnant la date de leur dernière modification (créer un objet Date à partir de contents[i].lastModified() ).

Exercice 3  Sorties binaires : la classe DataOutputStream.
Ecrire une classe TestFlotDeDonnees qui crée un répertoire à partir d’un chemin (String) s’il n’existe pas, quitte le programme si ce chemin correspond à un fichier qui n’est pas un répertoire, et sinon crée un fichier nommé « donnees.txt » dans ce répertoire. Le programme va alors écrire dans ce fichier la chaîne de caractères suivante : « Donnees inutilisables  entrantes et sortantes ». 
Le programme traitera les exceptions de type IOException et les imprimera  si elles se produisent. On imprimera également la taille en octets du flot DataOutputStream  représentant le fichier en utilisant la méthode size(). [Remarque : On doit constater que si la chaîne initiale contient n caractères - ces caractères étant des caractères Unicode (codés sur 16 bits) - ils occupent alors 2n octets].

  1. Pour créer un DataOutputStream  permettant d’écrire dans un fichier, on crée d’abord un objet File, puis un objet FileOutputStream  à partir de l’objet File, puis un objet DataOutputStream  à partir de l’objet FileOutputStream.
2. Pour écrire une chaîne String dans le flot de sortie, on dispose de la méthode writeChars() qui accepte un argument de type String. 

Correction de l’exercice 3:
import java.io.* ;
import java.util.Date;

public class TestFlotDeDonnees {
	public static void main (String [ ] args ) {
		String maChaine = new String (« Donnees inutilisables 
\ entrantes et sortantes ») ;
		String nomRepertoire = «  xxx/MesDonnees » ;
		try {
			File rep = new File (nomRepertoire) ; 
			if ( !rep.exists())  // si le repertoire n’existe pas
				rep.mkdir() ; // le créer
			else if ( !rep.isDirectory()) {
				System.err.println (nomRepertoire + 
							«n’est pas un repertoire») ;
				return ;
			}
			File unFichier = new File(rep,«donnees.txt»);
			unFichier.createNewFile() ;
			DataOutputStream monFlotDeDonnees =
				new DataOutputStream (
					new FileOutputStream(unFichier)) ;
			monFlotDeDonnees.writeChars(maChaine) ;
		}
		catch (IOException e) {
			System.out.println («IOException levee:» + e) ;
		}
	}
}