从文件夹中删除文件 - android

时间:2012-07-31 09:09:28

标签: java android

我有一个文件夹,其中包含一些我想在处理后删除的文件。这些文件的扩展名为.FIR。经过一些谷歌搜索,我找到了一个我修改过的递归方法:

void delete(File f) throws IOException {
      if (f.isDirectory()) {
        for (File c : f.listFiles())
            if(f.listFiles().toString().contains(".FIR"))
                delete(c);
      }
      if (!f.delete())
        throw new FileNotFoundException("Failed to delete file: " + f);
    }

此函数将抛出IOException告诉我:

07-31 11:02:31.885: E/DELETE:(5694): Failed to delete file: /mnt/sdcard/ExtractedFiles

该文件夹已设置为RW次操作。在我的清单文件中:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我无法找到另一个听起来像MODIFY_FILES

的权限

有什么想法吗?

5 个答案:

答案 0 :(得分:9)

试试这个:

void delete(File f) throws IOException {
    if (f.isDirectory()) {
        for (File c : f.listFiles()) {
            delete(c);
        }
    } else if (f.getAbsolutePath().endsWith("FIR")) {
        if (!f.delete()) {
            new FileNotFoundException("Failed to delete file: " + f);
        }
    }
}

答案 1 :(得分:4)

更好地使用temp个文件......

File f = File.createTempFile("pattern", ".suffix");

关闭应用程序后,首先关闭临时文件,然后删除。

有关详细信息,请参阅此链接:

http://www.roseindia.net/java/example/java/io/create-temp-file.shtml

答案 2 :(得分:2)

我认为问题在于:

if(f.listFiles().toString().contains(".FIR"))

将其更改为:

if(c.getName().contains(".FIR"))

并确保您的目录仅包含扩展名为 .FIR 的文件,否则(如果有其他扩展文件可用),它仍然无法删除非空目录


否则,请使用以下方法完成此操作:

private static boolean delete(File dir) {
    if (dir != null && dir.isDirectory()) {
        String[] children = dir.list();
        for (int i = 0; i < children.length; i++) {
            boolean success = delete(new File(dir, children[i]));
            if (!success) {
                return false;
            }
        }
    }
    return (dir.getName().contains(".FIR"))? dir.delete() : false;
}

答案 3 :(得分:1)

检查这个

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

答案 4 :(得分:0)

我正在使用此代码并且正在使用:

 String root_sd = Environment.getExternalStorageDirectory().toString();
 File file = new File(path) ;       
  File list[] = file.listFiles();
    for(File f:list)
      {
     name =  file.getName();
    filestv.setText(f.getName());
    //add new files name in the list
   //  delete.setText(name );


      }  


}

您可以按照完整的tutorials

进行操作