Comment on peut supprimer un dossier ?

Signaler
Messages postés
9
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
7 décembre 2005
-
 Utilisateur anonyme -
Salut

En utilisant java, comment on peut supprimer un dossier qui peut contenir des dossiers ou/et des fichiers ?
Je préfère ne pas avoir la demande de confirmation, puisque le but est de supprimer des dossiers traces.

De l'aide SVP et Merci d'avance

6 réponses

Messages postés
545
Date d'inscription
lundi 10 mai 2004
Statut
Membre
Dernière intervention
28 septembre 2011
2
Il y a bien la solution

File f = new File(chemin_de_ton_repertoire);
f.delete();

mais dans le cas d'un repertoire ça ne marche que si il est vide..

Donc faut que tu planches sur un truc recursif qui vide les repertoires en partant du bas de ton arborescence à supprimer...

Par contre j'vois pas comment faire.

gmi19oj19
Messages postés
365
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
2 décembre 2006

Salut,
si le file à supprimer est un repertoire, et qu'il contient plusieurs fichier,une confirmation de suppression des fichiers visualisé par une méthode qui affiche les files renvoyés par repertoire.list() dans un tableau, sera bien venu, si confirmation, boucle sur le tableau d'objet files en faisant delete()....
A+
ps : dis nous si on peut supprimer un repertoire vide, aprés, j'ai jamais fait et pas à l'ordre du jour, svp.
Messages postés
9
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
7 décembre 2005

Et voila la solution c'est très simple
_____________________________________________________________
import java.io.File;
import java.io.IOException;


public class DelRep {



public static void main(String[] args) {
File del = new File("C:\\test");
try {
recursifDelete(del);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


public static void recursifDelete(File path) throws IOException {
if (!path.exists()) throw new IOException(
"File not found '" + path.getAbsolutePath() + "'");
if (path.isDirectory()) {
File[] children = path.listFiles();
for (int i=0; children != null && i<children.length; i++)
recursifDelete(children[i]);
if (!path.delete()) throw new IOException(
"No delete path '" + path.getAbsolutePath() + "'");
}
else if (!path.delete()) throw new IOException(
"No delete file '" + path.getAbsolutePath() + "'");
}
}
____________________________________________________________

Mais le problème qui se posse Maintenant comment je peux chercher l'emplacement du dossier teste au lieu de donner en paramètre c:\\test je donnerai plutot la valeur de la recherche

SVP Aidez Moi
Messages postés
365
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
2 décembre 2006

Salut,
pas sur de comprendre, mais je tente cette réponse :
// ce fichier représent le repertoire de l'exécutable de l'application courante
final String pathApplication = new File("./") + ""; // existe forcément
pathApplication.getAbsolutePath() --> le chemin complet
tu peux donc signifier en paramètre un déplacement vers une fichier inclus par ajout de "//autreRep//etc... ou remonter l'arborescence par des substring(0, lastIndexOf("//");
note que new File("../") fait d'emblée remonter d'un niveau.
FileChooser c'est pratique aussi...
A+
Messages postés
9
Date d'inscription
mardi 29 novembre 2005
Statut
Membre
Dernière intervention
7 décembre 2005

Salut voici une solution de recherche d'un dossier :
_____________________________________________________________
import java.io.File;


public class RechRep {

public void scanFiles(File f) {

if (f.isDirectory()) {
String[] list = f.list();
if (list != null) {
for (int i = 0; i < list.length; i++) {
scanFiles(new File(f, list[i]));
}
}

if (f.getName().equals("test")) {
System.out.println("true");
}
}
}
public static void main(String[] args) {

RechRep fs = new RechRep();

File[] listeRacine = File.listRoots();

if (args.length != 0)
{
for(int i=0; i!=args.length; i++)
fs.scanFiles(new File(args[i]));
}
else
if (listeRacine != null) {
for (int i = 0; i < listeRacine.length; i++) {
File FDA = new File("A:\");
File FDB = new File("B:\");

if ((!(listeRacine[i].equals(FDA)))&&(!(listeRacine[i].equals(FDB)))&&(listeRacine[i].canWrite())) // ne pas rechercher dans les lecteurs Disquette et chercher dans les lecteurs permettant l'écriture
{
System.out.println(listeRacine[i]);
fs.scanFiles(listeRacine[i]);
}
}
}
}
}
____________________________________________________________

je sais pas pouquoi il ya toujours un mais mais comme vous le remarquez ce code permet la recherche sur le disque dur & le flash disque alors que moi je veux effectuer la recherche seulement dans le DD
Avez vous une idée??

A+

La solution qui fonctionne :

package com.gds.eraseAllInAFolder;

import java.io.File;

public class Start {

public static void main(String[] args) {
System.out.println(deleteDir(new File("c:\\az")));
new File("c:\\az").mkdir();
}

public static boolean deleteDir(File dir) {
if (dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++){
boolean success = deleteDir(new File(dir, children[i]));
if (!success) 
return false;	
}
}

// The directory is now empty so delete it
return dir.delete();
}

}