Maxr1998
Maxr1998

Reputation: 1238

Deleting Multiple Files Java (Android)

I'm new to programming Android, and I want to delete Files on the sd-card. This is my current (working) code...

File appvc = new File(Environment.getExternalStorageDirectory()
                .getAbsolutePath(), "ApplifierVideoCache");

if (appvc.isDirectory()) {
            String[] children = appvc.list();
            for (int i = 0; i < children.length; i++) {
                new File(appvc, children[i]).delete();
            }
}

Now I want to delete multiple files, but dont want to mention each file with that big block. Am I able to combine all files in one variable? Thanks ;)

Upvotes: 1

Views: 3301

Answers (5)

Tarif Chakder
Tarif Chakder

Reputation: 1856

For kotlin

Create a array of path list

    val paths: MutableList<String> = ArrayList()
    paths.add("Yor path")
    paths.add("Yor path")
    .
    .

delete file for each path

   try{
        paths.forEach{
             val file = File(it)
             if(file.exists(){
                  file.delete()
                }
         }
   }catch(e:IOException){

   }

Upvotes: 0

Maxr1998
Maxr1998

Reputation: 1238

Another possibility would be using the Apache commons-io library and calling

if (file.isDirectory())
    FileUtils.deleteDirectory(File directory);
else {
    if(!file.delete())
        throw new IOException("Failed to delete " + file);
}

Upvotes: 1

fge
fge

Reputation: 121790

Make a recursive method:

/*
 * NOTE: coded so as to work around File's misbehaviour with regards to .delete(),
 * which does not throw an exception if it fails -- or why you should use Java 7's Files
 */

public void doDelete(final File base)
    throws IOException
{
    if (base.isDirectory()) {
        for (final File entry: base.listFiles())
            doDelete(entry);
        return;
    }

    if (!file.delete())
        throw new IOException ("Failed to delete " + file + '!');
}

Upvotes: 3

Raghunandan
Raghunandan

Reputation: 133560

File dir = new File(android.os.Environment.getExternalStorageDirectory(),"ApplifierVideoCache");

Then call

deletedir(dir);

public void deletedir(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null) {
for (int i = 0; i < listFile.length; i++) {
   listFile[i].delete();    
}  
}    
}

or if your folder as sub folders then

public void walkdir(File dir) {

File listFile[] = dir.listFiles();

if (listFile != null) {
for (int i = 0; i < listFile.length; i++) 
{
    if (listFile[i].isDirectory()) 
    {
       walkdir(listFile[i]);
    } else 
      {
       listFile[i].delete();    
      }
}
}  

Upvotes: 0

David Jashi
David Jashi

Reputation: 4511

You should make a method out of this chunk of code, pass file name and call it whenever you like:

public void DeleteFile(String fileName) {
File appvc = new File(Environment.getExternalStorageDirectory()
                .getAbsolutePath(), fileName);

if (appvc.isDirectory()) {
            String[] children = appvc.list();
            for (int i = 0; i < children.length; i++) {
                new File(appvc, children[i]).delete();
            }
}
}

Upvotes: 0

Related Questions