我在解压缩文件时遇到问题,我得到“打开失败:ENOTDIR(不是目录)”错误。调试后我发现问题出现在这个函数中:
在我确定当前的ZipEntry是一个目录之后,我用它的路径调用这个函数:
private void dirChecker(String dir) {
File FiledirChecker = new File(PATH + dir); // PATH+dir = /mnt/sdcard/Pictures/Hafs
if (!FiledirChecker.isDirectory())
FiledirChecker.mkdirs();
}
这个功能结束后,我浏览了Pictures目录,Hafs不是一个目录,而是一个名为“Hafs”的0字节文件。
为什么会这样?
我应该指出,对于其他目录(除了“Hafs”),mkdirs通常会创建文件夹!但只有这个目录(Hafs)mkdirs不会创建一个目录,而是一个文件!
答案 0 :(得分:7)
这是因为代码中的其他地方已经创建了一个空文件。
或者当您的代码无法创建目录时,该文件是您上次运行的剩余文件。
答案 1 :(得分:0)
除非我遗漏了某些内容,否则您的文件已在其他地方创建
根据我在你的代码中看到的内容
1)检查文件是否不是目录
2)如果1)为真,则尝试创建完整的目录结构和与可能已存在的文件同名的目录。