Les classes E/S en java

publicité
Laboratoire 10 Programmation I
Automne 2008-11-24
Prof. Ilham Benyahia
Objectif : Les classes E/S en java
Note : Plusieurs codes contiennent la classe Exception qui est requise
pour manipuler les E/S mais ne fait pas partie du contenu du cours.
Cette classe sera fournie et donc le laboratoire n’exige pas le
développement de cette classe ni des connaissances techniques à part sa
documentation (définition) au besoin. La concentration se porte plutôt
sur les classes E/S.
Énoncé 1 : La classe File
1. Consulter java API pour se documenter sur la classe File et les
méthodes appelées au niveau du code suivant.
1. Compiler et exécuter le code fourni.
3. Compléter le code pour chercher d’autres propriétés du fichier que
vous testez également dans votre environnement comme : la dernière
modification du fichier, la taille du fichier, etc.
Code
import java.io.File;
class FileTest {
private static void p(String s) {
System.out.println (s);
}
public static void main (String args[ ]) {
File f1 = new File ("/java/COPYRIGHT");
p("File name:" + f1.getName( ) );
p("Path:" + f1.getPath ( ));
p("Abs Path:" +f1.getAbsolutePath());
p("Parent:" +f1.getParent( ));
p(f1.exists() ? "exists" : "does not exist");
p(f1.canWrite( ) ? "is wiritebale" : "is not writable");
p(f1.canRead ( ) ? "is readable" : "is not readable");
p("is" + (f1.isDirectory() ? "not" : "a directory"));
}
}
Énoncé 2
L’objectif est de tester le contenu des répertoires. Exécuter le code
suivant et testez l e dans votre environnement pour lister le contenu de
répertoires que vous choisissez.
- code :
import java.io.File;
class DirList {
public static void main (String args[]) {
String dirname = "/java";
File f1 = new File(dirname);
if (f1.isDirectory()) {
System.out.println("Directory of" + dirname);
String s[] = f1.list();
for (int i=0; i<s.length; i++) {
File f = new File(dirname + "/" + s[i]);
if (f.isDirectory()) {
System.out.println(s[i] + "is a directory");
} else
System.out.println(s[i] + "is a file");
}
}
else {
System.out.println(dirname + " is not a directory");
}
}
}
Énoncé 3 Faites une documentation des méthodes propres à la classe
ByteArrayStream et expliquer ensuite le rôle de la classe suivante après
l’avoir compilée et exécutée.
Code
import java.io.*;
import java.util.*;
class ByteArrayOutputStramS {
public static void main (String args[ ]) throws Exception {
int i;
ByteArrayOutputStream f0 = new ByteArrayOutputStream (12);
System.out.println ("Enter 10 characters and a return");
while ( f0.size ( ) != 10) {
f0.write(System.in.read( ) ) ;
}
System.out.println ("Buffer as a string");
System.out.println(f0.toString ());
System.out.println("Into array");
byte b[ ] = f0.toByteArray ( );
for (i= 0; i<b.length; i++) {
System.out.println( (char) b[i]);
}
System.out.println("To an OutputStream()");
OutputStream f2 = new FileOutputStream ("test.txt");
f0.writeTo (f2);
System.out.println ("Doing a reset");
f0.reset();
System.out.println("Enter 10 characters and a return");
while (f0.size() != 10) {
f0.write(System.in.read());
}
System.out.println("Done");
}
}
Énoncé 4
1.Expliquer les fonctions de la méthode wc après une documentation
des classes et méthodes utilisées dans le code suivant
2. Compiler et testez ensuite le code avec plusieurs jeux de tests.
Code WordCount
import java.io.*;
class WordCount {
public static int words =0;
public static int lines =0;
public static int chars =0;
public static void wc (InputStream f) throws IOException {
int c=0;
boolean lastNotWhite = false;
String whiteSpace =" \t\n\r";
while ( (c=f.read( )) != -1) {
chars ++;
if (c== '\n') {
lines++;
}
if ( whiteSpace.indexOf(c) != -1) {
if (lastNotWhite) {
words++;
}
lastNotWhite = false;
} else {
lastNotWhite = true;
}
}
}
public static void main (String args[ ]) {
InputStream f;
try {
if (args.length ==0) {
f= (System.in);
wc(f);
} else {
for (int i=0;i<args.length; i++) {
f= new FileInputStream(args[i]);
wc(f);
}
}
}
catch( IOException e) {
return;
}
System.out.println(lines + " " + words + " " + chars);
}
}
Téléchargement