Les entrées/sorties et expresion régulière
Exercice 1 - Manipulation de fichier texte
On cherche à écrire un programme effectuant la copie
des lignes paires d'un fichier texte.
Vous utiliserez pour cela les classes du
paquetage java.io.
Le fichier est pris en temps que premier paramètre sur la
ligne de commande et la sortie est effectuée sur
la sortie standard.
-
Afficher dans un premier temps, toutes les lignes
du fichiers une par une,
en utilisant la méthode readLine()
de BufferedReader.
-
Modifier le programme pour afficher seulement les
lignes paires.
Vous pourrez aussi remplacer le BufferedReader
par un LineNumberReader.
Exercice 2 - Parsing de XML à la main
On cherche à écrire un petit parseur XML
à la main permettant de lire le code suivant :
<toto>
<titi>
</titi>
<tutu>
</tutu>
</toto>
Pour chaque balise (markup ou
element) ouvrante trouvée, vous appelerez la
méthode startElement() et pour chaque balise
fermante trouvée, la méthode endElement().
public class MyXMLParser {
public void startElement(String element) {
..
}
public void endElement(String element) {
...
}
public void parse(Reader reader) throws IOException {
...
}
}
-
Compléter le code ci-dessus en écrivant la
méthode parse en vous aidant
du paquetage java.util.regex.
On supposera qu'une balise ne peut se trouver sur
plusieurs lignes en même temps.
-
Modifier votre programme pour qu'il prenne aussi
en compte les balises suivante :
<tata/>
<tjtj hello="3" banane="true">
</tjtj>
Quelle méthode doit-on appeler pour tata
et tjtj ?
Exercice 3 - Copie de fichiers
On cherche à écrire un programme effectuant la copie de fichiers
binaire.
-
Écrire dans un premier temps, une copie de deux fichiers
dont les noms sont pris sur la ligne de commande :
java Copy fichier.in fichier.out
On considerera les fichier comme contenant n'importe quoi
donc à recopier en binaire.
-
Modifier le programme pour utiliser un tableau de
8192 octets pour le transfert.
-
Modifier le programme pour que si les fichiers ne sont
pas spécifier sur la ligne de commande
le programme utilise l'entrée standard (System.in)
et la sortie standard (System.out).
PS: ne faite pas de copier/coller.
Exercice 4 - Manipulation de fichier binaire et Serialisation
On cherche à lire/sauvegarder un ensemble de points
de la classe java.awt.Point qui comporte
deux champs entiers x et y.
-
Créer un programme permettant de sauvegarder
les points en utilisant un DataOutputStream.
Créer un programme permettant de lire le résultat obtenu.
-
Modifier les programmes précédents pour utiliser les classes
ObjectOutputStream et
ObjectInputStream.
Exercice 5 - Lister le contenu d'un répertoire
Le but est d'écrire un petit programme permettant de
lister le contenu d'un répertoire comme ls.
Vous ferez attention a écrire le code de façon "objet".
-
Ecrire dans un premier temps, un programme qui liste
le contenu du répertoire courant.
-
Modifier le programme pour qu'il puisse prendre
optionnellement un fichier ou un réperoire en argument.
Puis ajouter l'option -a qui permet de
lister les fichiers cachés.
-
Ajouter l'option -R qui permet de
parcourir récursivement les répertoires.
-
Ajouter l'option -s qui trie les
fichiers.
-
Ajouter l'option -r regex qui affiche
uniquement les fichiers/répertoires correspondant
à l'expression régulière.
-
Ajouter l'option -l qui affiche en plus
du nom
- la taille
- la date de dernière modification
- les droits (lecture/écriture)
Rémi Forax - Université de Marne La Vallée