我整晚都在这里,它让我疯狂,我有一个应用程序,它通过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上读到,该位置的文件应该是应用程序可见和可读的。
非常感谢您访问此文件的任何帮助。
提前致谢
血浆
答案 0 :(得分:2)
如何在应用启动时从receivedURL
创建NSURL
?你应该这样做:
NSString *receivedURL = [url path];
确保receivedURL
在开头没有 file:// 。
另一种选择是使用NSURL
从文件中加载字符串:
NSString *myFileContents = [NSString stringWithContentsOfURL:url
encoding:NSUTF8StringEncoding
error:&error];
而不是将URL转换为文件路径。