1

我在解压文件时遇到问题,出现“open failed: ENOTDIR (Not a directory)”错误。经过调试发现问题出在这个函数上:
确定当前的ZipEntry是一个目录后,我用它的路径调用这个函数:

private void dirChecker(String dir) {
        File FiledirChecker = new File(PATH + dir); // PATH+dir = /mnt/sdcard/Pictures/Hafs

        if (!FiledirChecker.isDirectory())
            FiledirChecker.mkdirs();
    }

此功能结束后,我浏览到图片目录,Hafs 不是目录,而是一个名为“Hafs”的 0 字节文件。

为什么会这样?

我应该指出,对于其他目录(“Hafs”除外),mkdirs 通常会创建该文件夹!但仅针对此目录 (Hafs) mkdirs 不会创建目录而是文件!

4

2 回答 2

7

发生这种情况是因为在代码的其他地方,已经创建了一个空文件。

或者当您的代码无法创建目录时,该文件是您上次运行的剩余文件。

于 2012-08-15T11:54:32.087 回答
0

除非我错过了你的文件已经在其他地方创建的东西。
根据我在您的代码中看到的内容
1)您检查文件是否不是目录
2)如果 1)为真,您将尝试创建完整的目录结构和与可能已经存在的文件同名的目录。

于 2012-08-15T11:55:12.603 回答