Module I5 - Java RT Gestion des flux Objectif : Mise en oeuvre des mécanismes de flux, et filtres associés I - Gestion de flux de caractères 1.1 - Création de l'application de base Créez une nouvelleapplication contenant le code suivant : import java.io.*; public class TestFlux { public static void main(String[] args) throws IOException { BufferedReader clavier = new BufferedReader( new InputStreamReader(System.in)); String s; boolean fin=false; while (!fin) { s=clavier.readLine(); System.out.println(s); if (s.length()==0) fin =true; } } } => Que réalise ce code ? 1.2 - Création d'un fichier Nous souhaitons maintenant créer une application permettant d'écrire dans un fichier texte, les messages saisis au clavier. L'accès à un fichier s'effectue à l'aide du code suivant : String s=new String(); // Chaîne de caractères à écrire ... try { BufferedWriter fichier = new BufferedWriter( new FileWriter("texte.tp")); fichier.write(s,0,s.length()); fichier.close(); } catch(IOException e) { System.out.println("Erreur fichier : " + e.toString() ); } Modifier votre code précédent, afin d'écrire dans le fichier, les messages saisis au clavier. L'application doit s'interrompre lorsqu'une ligne vide est saisie. - Validez votre application en affichant le contenu du fichier à l'aide de notepad (ou equivalent) => Que constatez-vous vis à vis de la mise en forme du texte contenu dans le fichier ? - Cherchez en utilisant l'aide Java de "JCreator", une méhode permettant de créer une nouvelle ligne dans le fichier de destination. => Que se passe-t-il si vous relancez l'application, alors que le fichier texte existe déjà ? IUT Elbeuf 1-3 S.H. - TP04-02 Module I5 - Java RT Gestion des flux - Apportez à votre application, la modification suivante : FileWriter("texte.tp",true) Comparez avec le fonctionnement précédent. => Que se passe-t-il si vous supprimez la commande "fichier.close()" à la fin de l'application ? 1.3 - Lecture de fichier En vous inspirant fortement de l'application précédente, créez une nouvelle application permettant cette fois de lire puis d'afficher à l'écran, le contenu d'un fichier texte. Vous exploiterez l'aide Java de "Jcreator" pour obtenir la syntaxe exacte des méthodes à utiliser. II - Fichier de données 2.1 - Enregistrement de données - Créez une application, avec des variables au format suivants : int, float, double, boolean, char - Dans votre application, initialisez toutes ces variables, et affichez leurs valeurs à l'écran. - Inspirez-vous de vos applications précédentes pour pouvoir enregistrer vos informations dans un fichier. Utilisez le filtre : DataOuputStream, et ses méthodes writeXxx (voir aide Java) ...DataOutputStream(new BufferedOutputStream(new FileOutputStream("Data.tp4"))); => Qu'obtenez vous si vous utilisez notepad pour afficher le contenu du fichier ? 2.2 - Lecture de données Complétez votre application précédente pour obtenir la séquence suivante : - Déclaration de variables de type primaire - Initialisation des variables - Enregistrement des valeurs des variables dans un fichier - Réinitialisation des variables - Lecture des variables dans le fichier - Affichage des valeurs des variables après relecture => Obtenez-vous le résultat escompté ? => Que se passe-t-il si vous inversez 2 variables lors de la lecture ? => Est-il possible à partir de cette application de déterminer l'espace occupé en mémoire par les variables de type primaire ? (détailler la procédure à appliquer) IUT Elbeuf 2-3 S.H. - TP04-02 Module I5 - Java RT Gestion des flux III - Etude avancée des flux 3.1 - Accès simultanné au même fichier Reprenez l'application initiale (§ 1) et modifiez son organisation afin d'avoir simultannément une écriture et une lecture dans le même fichier. => L'ordre des opérations a-t-il une incidence sur le fonctionnement ? => Que se passe-t-il si le fichier n'existe pas lors du lancement de l'application ? 3.2 - Fichiers compressés - Recherchez sur votre poste un fichier au format texte de dimension suffisante (> 1 Ko) - Reprenez la version précédente de votre application, et créez une application qui recopie ce fichier sous un autre nom Validez son fonctionnement - Modifiez alors l'application pour utiliser le filtre "ZipOutputStream". => Quelle est alors la dimension du fichier ? => Pouvez-vous lire son contenu avec notepad ? - Effectuez la même opération avec cette fois le filtre "GzipOutputStream", et comparez vos résultats. IV - Gestion de fichiers Java propose également de nombreuses méthodes permettant de géréer les fichiers et répertoires. Consulter l'aide pour pouvoir réaliser les opérations suivantes : - Création d'un dossier - Affichage du contenu d'un répertoire (liste des fichiers existants) - Suppression d'un fichier dans un répertoire - Changement de nom d'un fichier ... IUT Elbeuf 3-3 S.H. - TP04-02