0

我整晚都在这,它让我发疯,我有一个应用程序,它由来自 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");
        }

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

任何有关访问此文件的帮助将不胜感激。

提前致谢

等离子体

4

1 回答 1

2

当应用程序启动时,您如何receivedURL根据NSURL给定的内容进行创建?你应该这样做:

NSString *receivedURL = [url path];

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

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

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

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

于 2012-10-25T22:51:07.620 回答