File.delete()ErrnoException

时间:2016-01-01 13:59:58

标签: java android file android-file

我试图在我的Android应用中删除内部文件和文件夹。

代码是正确的,但文件和文件夹都没有删除:delete()返回false。

在逐步调试之后,调试器将我带到" File.java"

中的课程
     catch(ErrnoException errnoException){} 

只返回false而没有任何其他解释的块。

你能告诉我如何解决这个问题吗?

修改 现在,因为我从文件夹创建zip存档,实际上删除了zip文件与我用来删除其他文件的相同功能!! 我怀疑应用程序只能删除应用程序创建的文件和/或文件夹,但我不确定;我试图分享从其他应用程序创建的zip存档,然后我把它们放在我的应用程序文件夹中,它们不能被删除也不能共享,当我从我的代码创建存档时,这些以后可以删除和共享!

4 个答案:

答案 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;
        }
    }
  1. 确定文件夹是否为空。
  2. 确保该文件是否正由其他应用程序使用。
  3. 请尝试以下代码:

    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)

所以问题就像我怀疑的那样,我手动添加文件和文件夹用于测试目的并且它们还没有被删除,当我在代码中创建这些文件和文件夹时,删除工作正常。 但是,我仍然很好奇,为什么,这取决于创建这些文件,文件描述符或其他任何内容的应用程序上下文...

无论如何,它现在正在工作