从我的应用程序访问文档/收件箱中 IOS 上的文件

Posted

技术标签:

【中文标题】从我的应用程序访问文档/收件箱中 IOS 上的文件【英文标题】:Accessing a file on IOS in Documents/Inbox from my Application 【发布时间】:2012-10-25 22:40:40 【问题描述】:

我整晚都在这,它让我发疯,我有一个应用程序,它由来自 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 的字符串中,但尝试读取该文件只会给出一个空字符串和错误 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】:

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

NSString *receivedURL = [url path];

确保receivedURL 开头没有file://

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

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

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

【讨论】:

好吧,我们离得更近了,我用的是 .. NSString *receivedURL = [NSString stringWithFormat:@"%@",url];要将其转换为字符串,您的方法会删除“file://localhost”,并且现在可以进行测试以查看它是否存在,但是仍然无法读取文件,但现在错误为 261。我将拥有一个谷歌,看看我能不能解决它。 对其进行排序,必须在导入行将编码更改为 NSASCIIStringEncoding。但是感谢您的帮助,它使我能够读取文件! :)

以上是关于从我的应用程序访问文档/收件箱中 IOS 上的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从我的 Gmail 收件箱中获取有时间限制的 IOS SDK 中的电子邮件?

如何在 iPad 上从我的应用程序访问第三方应用程序?

以编程方式访问 iOS 上的应用程序图标

通过 php 代码访问我的 gmail 收件箱

iOS 7 从文档中检索收件箱目录

将收到的 Facebook 消息(聊天 + 消息)转发到我的电子邮件收件箱,然后从我的 Facebook 收件箱中删除它们