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;
}