CodeS-SourceS
Rechercher un code, un tuto, une réponse

Gestion des fichiers

Décembre 2017


Gestion des fichiers



La classe File


La classe File permet de manipuler le système de fichier (déplacement, copie, etc.) mais ne permet pas d'accéder au contenu des fichiers.


L'objet File permet de manipuler le système de fichier. File peut être soit un dossier soit un fichier, aucune distinction n'est faite entre ces deux éléments. La documentation de la classe File est ici : http://docs.oracle.com/javase/7/docs/api/java/io/File.html

Instanciation


Pour un système de fichier Windows
Le caractère \ étant un caractère réservé, il faut le banaliser en le doublant, on remplace donc les \ par \\
File fichier = new File("D:\\dossier\\fichier.txt");
File dossier = new File("D:\\dossier");


Pour un système de fichier unix/linux
File fichier = new File("/home/dossier/fichier.txt");
File dossier = new File("/home");

Méthodes principales de la classe File


Le tableau ci-dessous liste les méthodes principales de la classe File
MéthodeDescription
delete()Supprime le fichier sur le système de fichiers
deleteOnExit()Supprime le fichiers sur le système de fichiers lors de la fermeture de la JVM
exists()Retourne vrai si le fichier ou le dossier existe sur le système de fichiers
getName()Retourne le nom du fichier ou du dossier
getParent()Retourne le nom du dossier parent ou null s'il n'existe pas de parent
isDirectory()Retourne vrai si le path associé à l'objet file est un dossier
isFile()Retourne vrai si le path associé à l'objet file est un fichier
list()Retourne un tableau de String contenant les noms des dossiers et des fichiers dans le répertoire désigné par le path
listFiles()Retourne un tableau de File contenant les noms des dossiers et des fichiers dans le répertoire désigné par le path
mkdir()Créé le répertoire désigné par le path
mkdirs()Créé le désigné par le path avec les répertoires parents s'ils n'existent pas
renameTo(File destination)Renomme ou déplace le fichier sur le système de fichier

Lister les fichiers d'un dossier


Pour lister les fichiers d'un répertoire, on utilise la méthode list() ou listFiles

Exemple d'utilisation de list()
Les fichiers et les dossiers de D:\dossier1 sont affichés dans la console :
File dossier = new File("D:\\dossier1");
String[] contenu = dossier.list();
System.out.println(Arrays.toString(contenu));


Exemple d'utilisation de listFiles()
Les fichiers et les dossiers de D:\dossier1 sont listés dans la console, les fichiers sont précédés de "Fichier :" et les dossiers de "Dossier :"
File dossier = new File("D:\\dossier1");
File[] contenu = dossier.listFiles();
for (File f : contenu){
	if(f.isDirectory()){
		System.out.println("Dossier : "+f.getName());
	}
	else {
		System.out.println("Fichier : "+f.getName());
	}
}

Déplacer un fichier

Sur un même Système de fichier


File fichier = new File("D:\\dossier1\\fichier.txt");
fichier.renameTo(new File("D:\\dossier1\\dossier\\fichier.txt"));

Sur un système de fichier différent


Si le système de fichier est différent, il faut déplacer le contenu du fichier sur l'autre système de fichier. Dans ce cas, l'objet File n'est pas suffisant.

Dans ce cas, il faudra copier le fichier vers la destination et supprimer le fichier initial. (Pour la copie, voir la section suivante)

Copier un fichier


La copie d'un fichier nécéssite un accès aux données du FileSystem, la classe File ne gère pas ce fonctionnement.

FileChannel source=null;
FileChannel destination=null;
try {
	source = new FileInputStream("D:\\dossier1\\fichier.txt").getChannel();
	destination = new FileOutputStream("C:\\dossier2\\f.txt").getChannel();
	source.transferTo(0, source.size(), destination);
}
catch (FileNotFoundException e1) {
	e1.printStackTrace();
}
catch (IOException e) {
	e.printStackTrace();
}
finally {
	if(source != null) {
		try {
			source.close();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
	if(destination != null) {
		try {
			destination.close();
		} 
		catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Suppression d'un fichier


File fichier = new File("D:\\dossier1\\fichier.txt");
fichier.delete();

Manipulation des fichiers texte

Lire un fichier


/* Le chemin vers le fichier à lire */
String pathFichier="D:\\fichier.txt";

BufferedReader fluxEntree=null;
try {
	/* Création du flux vers le fichier texte */
	fluxEntree = new BufferedReader(new FileReader(pathFichier));

	/* Lecture d'une ligne */
	String ligneLue = fluxEntree.readLine();

	while(ligneLue!=null){
		System.out.println(ligneLue);
		ligneLue = fluxEntree.readLine();
	}
}
catch(IOException exc){
	exc.printStackTrace();
}
finally{
	try{
		if(fluxEntree!=null){
			/* Fermeture du flux vers le fichier */
			fluxEntree.close();
		}
	}
	catch(IOException e){
		e.printStackTrace();
	}
}

Ecrire un fichier


PrintWriter out=null;
try{
	/* Path vers le fichier à créer*/
	String pathFichier = "D:\\fichier.txt";

	/* Ouverture du fichier en écriture */
	out = new PrintWriter(new BufferedWriter(new FileWriter(pathFichier)));

	/* Ecriture d'une ligne puis saut de ligne */
	out.println("Ligne 1");

	/* Ecriture d'une ligne sans saut de ligne */
	out.print("Ligne 2");
	out.println(" suite de la ligne 2");
}
catch(IOException exc){
	exc.printStackTrace();
}
finally {
	if(out!=null){
		/* Fermeture du flux */
		out.close();
	}
}

Ajouter une ligne à un fichier


/* Chemin vers le fichier à modifier*/
String pathFichier = "D:\\fichier.txt";

/* Texte à ajouter */
String aAjouter = "Texte a ajouter";
FileWriter writer = null;
try	{
	/* Ouverture du fichier en écriture */
	writer = new FileWriter(pathFichier, true);
	
	/* Ajout du contenu */
	writer.write(aAjouter, 0, aAjouter.length());
}
catch(IOException ex){
	ex.printStackTrace();
}
finally{
	if(writer != null){
		try {
			/* Fermeture du flux */
			writer.close();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}
}
Publié par cs_Julien39.
Ce document intitulé «  Gestion des fichiers  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Ajouter un commentaire

Commentaires

Donnez votre avis
Imprimer avec Java
Utilisation des JInternalFrame