访问iOS设备上的文件时出现问题

时间:2013-10-26 12:55:29

标签: ios objective-c file-io

我遇到了用Object c ++和Xcode 5编写的代码的问题:

NSLog(@"%@",pathToFile);
    NSString *outputFileName = [NSTemporaryDirectory() stringByAppendingPathComponent:@"output.txt"];

    FILE* fileo = fopen([outputFileName UTF8String], "w");
    if (fileo) fclose(fileo);
    fileo = fopen([outputFileName UTF8String], "a");
    if (!fileo) { perror("fopen"); NSLog(@" Wrong"); } else { NSLog(@"Nothing Wrong"); }

    //Open the PDF source file:
    //  FILE* filei = fopen("c:\\pdf\\somepdf.pdf", "rb");
    FILE* filei = fopen([pathToFile UTF8String], "rb");
if (!filei) { perror("fopen"); NSLog(@" Wrong"); } else { NSLog(@"Nothing Wrong"); }

    if (filei && fileo)
    {

问题是filei每次都是Nil而我不知道为什么,! 我认为问题是路径文件: 它是:pathToFile

__NSCFString *  @"file:///private/var/mobile/Applications/3D02CBE0-6A8E-4709-B6EF-B6793E19F4F4/Documents/Inbox/Published_071032-8.pdf"

0x145c53e0

代码在模拟器上运行良好但在iPhone上运行不正常! 有人知道什么是错的吗?

工作目录可能但是没有办法在xcode 5中更改它。

1 个答案:

答案 0 :(得分:0)

是的,您的文件路径似乎就是问题所在。我甚至肯定你看到@"file://..."之类的东西,因为unix文件系统直接基于路径,例如/var/mobile/.../

接下来我建议你检查你定义pathToFile字符串的位置。也许它已经超出了范围,因为它是在堆栈上创建的,因为您在同一个函数/方法中创建它。

这可能就是NULL / nil的原因。

也许是一个解决方案:根据NSBundle类创建路径+不要使用file:// -paths。

让我知道它是否有效或需要任何其他帮助。 谢谢 问候