Comment on peut supprimer un dossier ?

info2601 Messages postés 9 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 7 décembre 2005 - 29 nov. 2005 à 15:29
 Utilisateur anonyme - 21 juil. 2010 à 17:04
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

gmi19oj19 Messages postés 545 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 28 septembre 2011 2
29 nov. 2005 à 15:38
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
0
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
30 nov. 2005 à 08:48
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.
0
info2601 Messages postés 9 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 7 décembre 2005
2 déc. 2005 à 10:54
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
0
jcodeunpeu Messages postés 365 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 2 décembre 2006 2
3 déc. 2005 à 06:16
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
info2601 Messages postés 9 Date d'inscription mardi 29 novembre 2005 Statut Membre Dernière intervention 7 décembre 2005
6 déc. 2005 à 17:42
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+
0
Utilisateur anonyme
21 juil. 2010 à 17:04
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();
}

}
0
Rejoignez-nous