从我的应用程序访问Documents / Inbox中IOS上的文件

时间:2012-10-25 22:40:41

标签: objective-c ios xcode nsfilemanager documents

我整晚都在这里,它让我疯狂,我有一个应用程序,它通过Safari的openURL调用调用。 Safari向我发送fileURL并将文件复制到Documents / Inbox中,然后我想将该文件的内容读入字符串。然而,在尝试了许多不同的方式来定位/访问文件之后......我的应用程序仍然说该文件不存在。

所以我这样从Safari发送了fileURL。

file://localhost/Users/plasma/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/EE3A1801-98CF-4C7A-8ED1-639A81316B1C/Documents/Inbox/HereIsYourFile.txt

如果我在终端中浏览到此路径,我可以确认该位置和文件是否存在。

macbook:Inbox plasma$ pwd

/Users/plasma/Library/Application Support/iPhone Simulator/6.0/Applications/EE3A1801-98CF-4C7A-8ED1-639A81316B1C/Documents/Inbox

macbook:Inbox plasma$ ls
HereIsYourFile.txt

我将此路径放在名为receivedURL的String中,但尝试读取该文件只会给出一个空字符串并显示错误260.

NSString *myFileContents = [NSString stringWithContentsOfFile:receivedURL
                                             encoding:NSUTF8StringEncoding
                                             error:&error];

这推断文件不存在,所以我尝试证明它存在于我的应用程序中......

        NSFileManager *filemgr;
        filemgr = [NSFileManager defaultManager];

        if ([filemgr fileExistsAtPath:receivedURL ] == YES) {
            NSLog (@"File exists");
        } else {
            NSLog (@"File not found");
        }

它说它不存在!!!!我可以看到..它在那里,所以为什么我的应用程序不能。我在文档页面Here上读到,该位置的文件应该是应用程序可见和可读的。

非常感谢您访问此文件的任何帮助。

提前致谢

血浆

1 个答案:

答案 0 :(得分:2)

如何在应用启动时从receivedURL创建NSURL?你应该这样做:

NSString *receivedURL = [url path];

确保receivedURL在开头没有 file://

另一种选择是使用NSURL从文件中加载字符串:

NSString *myFileContents = [NSString stringWithContentsOfURL:url
                                         encoding:NSUTF8StringEncoding
                                         error:&error];

而不是将URL转换为文件路径。