Suppression d'un dossier

Contenu du snippet

ce code permet de supprimer une arborescence complete du disque dur en se demarrant dans un nouveau thread !
on le demarre de cette facon :

Thread t = new suppressionHd (new File("c:\\test\\"));
t.start();

Source / Exemple :


//les import pour que cela fonctionne
import java.io.File;

//classe principale qui etend et implements ce dont elle a besoin pour fonctionner
public class suppressionHd extends Thread implements Runnable {
	// constructeur qui recoit un File en parametre
	public suppressionHd(File Finit) {
		// on recupere le parametre
		this.Finit = Finit;
		// on l'affiche pour le fun ;)
		System.out.println("fichier initiale :" + Finit.getName());
	}

	public void run() {
		// on verifie si c'est un repertoire .....
		if (Finit.isDirectory()) {
			// si s'en est un on liste son contenu
			listing = Finit.listFiles();
			// si il n'a pas de contenu ...
			if (listing.length == 0) {
				// ...on supprime le repertoire
				Finit.delete();
				// on previen l'utilisateur
				System.out.println("suppession finni");
			}
			// sinon tant qu'il y a des sou repertoire ....

			while (listing.length > 0) {
				// poiur chaque sous repertoire ...
				for (int i = 0; i < listing.length; i++) {
					// ...on verifie si c'est des fichier ...
					if (listing[i].isFile()) {
						// ... si ca en est on les supprime
						boolean b = listing[i].delete();
						// on verifie si tout c'est bien passe
						System.out.println("suppession de :" + listing[i] + ":"
								+ b);
					}
					// si c'est un repertoire on demare une methode...
					else{
						// on demare la methode
						dlRep(listing[i]);
					}

				}
				// on met a jour listing ...
				listing = Finit.listFiles();
				// ... on verifie si il reste des sous repertoire
				if (listing.length == 0) {
					// si yen a pas on supprime le repertoire de depart
					Finit.delete();
					System.out.println("suppession finni");
					break; // on quite le Thread
				}
			}
			// .....c'est pas un repertoire donc on le supprime directement
		} else if (Finit.isFile())
			Finit.delete();

				this.interrupt(); // on quitte le thread
	}

	// debut de la methode
	private void dlRep(File ToDel) {
		// on list le repertoire donner en parametre
		File[] listing2 = ToDel.listFiles();
		// si il est vide on le supprime
		if (listing2.length == 0)
			// on le supprime
			ToDel.delete();
		// et pour chaque objet File liste on ...
		for (int i = 0; i < listing2.length; i++) {
			// ...verifie si c'est un fichier
			if (listing2[i].isFile()) {
				// on le supprime et on verifie que c'est bon
				boolean b = listing2[i].delete();
				System.out.println("suppession de :" + listing2[i] + ":" + b);
			}
			// sinon c'est un repertoire
			else {
				// on applique de nouveau la methode sur le repertoire
				dlRep(listing2[i]);
			}
		}
	}

	// variable
	public File[] listing;

	public File Finit;
}

A voir également