当我试图从/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() ) ...
此外,您不需要将"/"替换为文件分隔符。可以让它像"/"一样