java.io.IOException
.
L'exemple ci-dessous montre comment obtenir des informations sur un fichier. Notons qu'il n'existe pas de classe spéciale pour traiter des répertoires, ceux-ci sont considérés comme des fichiers.
import java.io.*;
class fileInfo {
public static void main (String args[]) throws java.io.IOException {
System.out.println("Entrez le repertoire ou se trouve le fichier : ");
char ch;
// directory
StringBuffer dirBuf = new StringBuffer();
while ((ch = (char)System.in.read()) != '\n')
dirBuf.append(ch);
File dir = new File(dirBuf.toString());
// file
System.out.println("Entrez le nom du fichier : ");
StringBuffer fileBuf = new StringBuffer();
while ((ch = (char)System.in.read()) != '\n')
fileBuf.append(ch);
File fil = new File(dir,fileBuf.toString());
if (fil.exists()) {
System.out.println("Fichier trouve");
System.out.println("Nom de fichier : "+fil.getName());
System.out.println("Chemin du fichier : "+fil.getPath());
System.out.println("Chemin absolu : "+fil.getAbsolutePath());
System.out.println("Droit de lecture : "+fil.canRead());
System.out.println("Droit d'ecriture : "+fil.canWrite());
System.out.println("\nContenu du repertoire :");
String listing[] = dir.list();
for (int i = 0;i < listing.length;i++)
System.out.println(listing[i]);
} else {
System.out.println("Fichier absent");
}
}
}
La lecture et l'écriture se fait en utilisant les différentes classes
de traitement des flux (streams). L'exemple ci-dessous copie un
fichier source dans un fichier destination, après avoir effectué un
certain nombre de tests pour vérifier que l'opération de copie est
possible. Les classes utilisées sont FileInputStream
et
FileOutputStream
du paquetage
java.io
. Ces deux classes étendent java.io.InputStream
.
import java.io.*;
class fileCopy {
public static void main (String args[]) throws java.io.IOException {
char ch;
// repertoire source
System.out.println("repertoire source : ");
StringBuffer dirBuf = new StringBuffer();
while ((ch = (char)System.in.read()) != '\n')
dirBuf.append(ch);
File srcDir = new File(dirBuf.toString());
if (!srcDir.exists()) {
System.out.println("repertoire absent");
System.exit(1);
} else if (!srcDir.canRead()) {
System.out.println("repertoire illisible");
System.exit(1);
}
// fichier source
System.out.println("fichier source : ");
StringBuffer fileBuf = new StringBuffer();
while ((ch = (char)System.in.read()) != '\n')
fileBuf.append(ch);
File srcFile = new File(srcDir,fileBuf.toString());
if (!srcFile.exists()) {
System.out.println("fichier absent");
System.exit(1);
} else if (!srcFile.canRead()) {
System.out.println("fichier illisible");
System.exit(1);
}
// repertoire destination
System.out.println("repertoire destination : ");
dirBuf = new StringBuffer();
while ((ch = (char)System.in.read()) != '\n')
dirBuf.append(ch);
File dstDir = new File(dirBuf.toString());
if (!dstDir.exists()) {
System.out.println("repertoire absent");
System.exit(1);
} else if (!dstDir.canWrite()) {
System.out.println("repertoire protege en ecriture");
System.exit(1);
}
// fichier destination
System.out.println("fichier destination : ");
fileBuf = new StringBuffer();
while ((ch = (char)System.in.read()) != '\n')
fileBuf.append(ch);
File dstFile = new File(dstDir,fileBuf.toString());
if (dstFile.exists()) {
System.out.println("fichier existant");
System.exit(1);
}
// copie du fichier
FileInputStream inStream = new FileInputStream(srcFile);
FileOutputStream outStream = new FileOutputStream(dstFile);
// tant que ce n'est pas la fin du fichier
while (inStream.available() > 0)
outStream.write(inStream.read());
// fermeture des fichiers
inStream.close();
outStream.close();
}
}