Pour gérer les fichiers de type texte on utilise des objets des classes InputStreamReader et OutputStreamWriter. Ces objets sont respectivement associés à des flots d'octets de type InputStream et OutputStream, ils ont pour tâche de convertir les octets en caractères. Pour pouvoir lire des lignes entières de texte on utilisera un objet de la classe BufferedReader associé à un InputStreamReader. Cet objet utilise un tampon (buffer) qui minimise le nombre d'accès au fichier.
Nous allons écrire un programme qui affiche le contenu du fichier texte dont le nom est passé en paramètres (commande "type" du DOS).
Nous construisons successivement un InputStream associé au fichier, un InputStreamReader qui effectue la conversion octets/caractères et un BufferedReader qui utilise un tampon et permet de lire des lignes entières. Cela nous donne :
InputStream ips=new FileInputStream(args[0]); InputStreamReader ipsr=new InputStreamReader(ips); BufferedReader br=new BufferedReader(ipsr);
Ces 3 instructions peuvent être réduites à une seule de la façon suivante:
BufferedReader br=new BufferedReader( new InputStreamReader( new FileInputStream(args[0])));
Nous utilisons la méthode readLine() de la classe BufferedReader. Cette méthode renvoie une chaîne de caractères ou null lorsque la fin du flot est atteinte. Cela nous donne le code suivant pour afficher chaque ligne sur la console DOS:
String ligne; while ((ligne=br.readLine())!=null) System.out.println(ligne);
On commence par vérifier qu'un nom de fichier a bien été passé en argument.
import java.io.*; public class type { public static void main(String args[]) { if (args.length==0) { System.out.println("Passer un nom de fichier en paramètre."); System.exit(1); } try { InputStream ips=new FileInputStream(args[0]); InputStreamReader ipsr=new InputStreamReader(ips); BufferedReader br=new BufferedReader(ipsr); String ligne; while ((ligne=br.readLine())!=null) System.out.println(ligne); br.close(); } catch (Exception e) { System.out.println(e.toString()); } } }
Après avoir compilé le programme, il suffit d'entrer la commande :
java type type.java
pour afficher le source du programme.