从应用程序的私人存储中删除文件



当我试图从/data/data/com.mycompany.appname/files/mydir/中删除一个文件时,我遇到了一个问题。

我有以下代码:

class MyClass extends android.content.ContextWrapper;
//...
private void delete() {
    String file = getFilesDir() + "/" + (getString(R.string.directory_logs) + "/" + selectedLogFile).substring(1);
    file = file.replaceAll("/", File.separator);
    //here the value of file is:"/data/data/com.mycompany.appname/files/mydir/my_file.log"
    if (FileOperation.delete(file)) {
        //Do something if deleting was successfull
    }
}

FileOperation.delete()方法为:

public static boolean delete(String fileOrDirectory) {
    return delete(new File(fileOrDirectory));
}
public static boolean delete(File fileOrDirectory) {
    if (fileOrDirectory.isDirectory()) {
        for (File child : fileOrDirectory.listFiles()) {
            delete(child);
        }
    }
    return fileOrDirectory.delete();
}

FileOperation.delete()的答案总是错误的。

我试图调用ContextWrapper.deleteFile(file)而不是delete方法,但它抛出了IllegalArgumentException,并显示消息:

文件/data/data/co.mycompany.appname/files/mydir/my_File.log包含路径分隔符

你能帮我如何删除目录中的文件吗?

这是一个奇怪的错误,但

  • 只有root用户有权删除此文件
  • 当您用更改重新安装应用程序时,此文件将被删除或重新创建

若你们有根手机,并不是所有的用户都有。

您可以尝试以下操作:

File x = new File(path_to_file);
if ( x.delete() ) ...

此外,您不需要将"/"替换为文件分隔符。可以让它像"/"一样

相关内容

  • 没有找到相关文章

最新更新