【发布时间】:2012-05-19 11:54:39
【问题描述】:
由于某种原因,即使我已将路径转换为文档路径,fopen 也会给出错误No such file or directory。
NSString *docsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *filePath = [docsPath stringByAppendingPathComponent:filename];
我使用 UTF8String 方法传递 NSString,并且只在读取模式下打开
if ((fh=fopen(filename, "r+b")) == NULL){
perror("fopen");
return -1;
}
尝试打开文件名时会打印出以下完整路径(我删除了应用程序实际目录名的确切值)
/var/mobile/Applications/#####/Documents/testImages.pak
为什么 fopen 检测不到文件?我已将其添加到目标中,甚至尝试将文件检查器中的位置设置更改为 Relative to Group 和 Relative to Project
【问题讨论】:
-
打开filePath而不是filename怎么样?
-
文件名变量位于 C API 本身中。 obj c 代码位于包装器中。我将带有 UTF8String 的 filePath 传递给期望 char * 的 c 函数
-
我不知道你想要完成什么,但我建议使用原生的 NSFileManager 和 NSFileHandle,它们应该适用于 fopen 所做的几乎所有事情。
-
文件是否真的存在于文档目录中?它是如何到达那里的?
-
@Helium3 使用可写副本的标准过程:如果文件在 doc-dir 中不存在,则从 resource-dir 将其复制到那里。在那里你可以写入文件。
标签: objective-c ios c fopen