J'utilise ce code pour supprimer tous les fichiers:
File root = new File("root path");
File[] Files = root.listFiles();
if(Files != null) {
int j;
for(j = 0; j < Files.length; j++) {
System.out.println(Files[j].getAbsolutePath());
System.out.println(Files[j].delete());
}
}
Il supprimera false où Files[j]
est un dossier.
Je veux supprimer le dossier et tous ses sous-fichiers.
Comment puis-je modifier cela?
Le moyen le plus simple serait d’utiliser FileUtils.deleteDirectory depuis la bibliothèque Apache Commons IO.
File dir = new File("root path");
FileUtils.deleteDirectory(dir);
Gardez à l'esprit que cela supprimera également le répertoire contenant.
Ajouter cette ligne dans le fichier de dégradé pour avoir Apache
compile 'org.Apache.commons:commons-io:1.3.2'
Vérifiez ce lien également Supprimer le dossier de la mémoire de stockage interne dans android? .
void deleteRecursive(File fileOrDirectory) {
if (fileOrDirectory.isDirectory())
for (File child : fileOrDirectory.listFiles())
deleteRecursive(child);
fileOrDirectory.delete();
}
File file = new File("C:\\A\\B");
String[] myFiles;
myFiles = file.list();
for (int i=0; i<myFiles.length; i++) {
File myFile = new File(file, myFiles[i]);
myFile.delete();
}
B.delete();// deleting directory.
Vous pouvez écrire une méthode de cette façon: Supprime tous les fichiers et sous-répertoires sous dir.Retourne la valeur true si toutes les suppressions ont abouti. Si une suppression échoue, la méthode cesse d’essayer de supprimer et renvoie false.
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();
}
si storageDir est un répertoire
for(File tempFile : storageDir.listFiles()) {
tempFile.delete();
}
Vous pouvez vérifier comme ceci:
for(j = 0; j < Files.length; j++) {
if(file.isDirectory()){
for(File f : file.listFiles()){
System.out.println(Files[j].getAbsolutePath());
System.out.println(Files[j].delete());
}
else {
System.out.println(Files[j].getAbsolutePath());
System.out.println(Files[j].delete());
}
}
vous pouvez essayer ce code pour supprimer des fichiers et des sous-fichiers
public void deleteFile(File f){
String[] flist=f.list();
for(int i=0;i<flist.length;i++){
System.out.println(" "+f.getAbsolutePath());
File temp=new File(f.getAbsolutePath()+"/"+flist[i]);
if(temp.isDirectory()){
deleteFile(temp) ;
temp.delete();
}else{
temp.delete();
}
Dans votre cas, cela fonctionne parfaitement http://commons.Apache.org/proper/commons-io/apidocs/org/Apache/commons/io/FileUtils.html#cleanDirectory(Java.io.File )
File dir = new File("dir_path");
if(dir.exists() && dir.isDirectory()) {
FileUtils.cleanDirectory(dir);
}
Si vous voulez supprimer le dossier lui-même. (Il n'est pas nécessaire que ce soit vide). Peut être utilisé pour les fichiers aussi.
File dir = new File("dir_path");
if(dir.exists()) {
FileUtils.forceDelete(dir);
}
Ce code fonctionne pour moi. "imagesFolder" contient des fichiers et des dossiers contenant des fichiers.
if (imagesFolder.isDirectory())
{
String[] children = imagesFolder.list(); //Children=files+folders
for (int i = 0; i < children.length; i++)
{
File file=new File(imagesFolder, children[i]);
if(file.isDirectory())
{
String[] grandChildren = file.list(); //grandChildren=files in a folder
for (int j = 0; j < grandChildren.length; j++)
new File(file, grandChildren[j]).delete();
file.delete(); //Delete the folder as well
}
else
file.delete();
}
}
// Supprimer le dossier et son contenu
public static void DeleteFolder(File folder)
{
try
{
FileUtils.deleteDirectory(folder);
} catch (Exception ex)
{
Log.e(" Failed delete folder: ", ex.getMessage());
}
}
// Supprimer le contenu du dossier uniquement
public static void DeleteFolderContents(File folder)
{
try
{
FileUtils.cleanDirectory(folder);
} catch (Exception ex)
{
Log.e(" Failed delete folder contents: ", ex.getMessage());
}
}