我试图在我的Android应用中删除内部文件和文件夹。
代码是正确的,但文件和文件夹都没有删除:delete()
返回false。
在逐步调试之后,调试器将我带到" File.java"
中的课程 catch(ErrnoException errnoException){}
只返回false
而没有任何其他解释的块。
你能告诉我如何解决这个问题吗?
修改 现在,因为我从文件夹创建zip存档,实际上删除了zip文件与我用来删除其他文件的相同功能!! 我怀疑应用程序只能删除应用程序创建的文件和/或文件夹,但我不确定;我试图分享从其他应用程序创建的zip存档,然后我把它们放在我的应用程序文件夹中,它们不能被删除也不能共享,当我从我的代码创建存档时,这些以后可以删除和共享!
答案 0 :(得分:1)
/**
* Deletes this file. Directories must be empty before they will be deleted.
*
* <p>Note that this method does <i>not</i> throw {@code IOException} on failure.
* Callers must check the return value.
*
* @return {@code true} if this file was deleted, {@code false} otherwise.
*/
public boolean delete() {
try {
Libcore.os.remove(path);
return true;
} catch (ErrnoException errnoException) {
return false;
}
}
请尝试以下代码:
public static boolean deleteFileSafely(File file) {
if (file != null) {
String tmpPath = file.getParent() + File.separator + System.currentTimeMillis();
File tmp = new File(tmpPath);
file.renameTo(tmp);
return tmp.delete();
}
return false;
}
答案 1 :(得分:0)
File file=new File("yourfilepath");
String command="rm -r "+file.toString();
Runtime.getRuntime().exec(command);
这将执行命令,就像使用cmd或终端一样:)
答案 2 :(得分:0)
问题可能与文件权限有关。您确定自己有权删除吗?
答案 3 :(得分:0)
所以问题就像我怀疑的那样,我手动添加文件和文件夹用于测试目的并且它们还没有被删除,当我在代码中创建这些文件和文件夹时,删除工作正常。 但是,我仍然很好奇,为什么,这取决于创建这些文件,文件描述符或其他任何内容的应用程序上下文...
无论如何,它现在正在工作