下载或以其他方式获得的文件的NSURL,用于打开iOS应用程序,其中包含:它的文件路径是什么



我发现到目前为止,发送到application:openURL:sourceApplication:annotation:的路径是:

file://localhost/private/var/mobile/Applications/<GUID>/Documents/Inbox/file

为了检查我即将执行的文件系统操作是否确实有可能成功(并且给我的url不是沙箱之外的位置),我似乎必须这样做:

NSString* hdurl = [[@"file://localhost/private" stringByAppendingString:NSHomeDirectory()] stringByAppendingString: @"/"];
NSString* path = url.absoluteString;
if ([path hasPrefix:hdurl]) {
    // now ready to e.g. call fopen on: [path substringFromIndex:@"file://localhost".length]

现在,我似乎模糊地回忆起(这可能是错误的),在过去我看到过使用file:///风格的URL。这显然会导致此代码失败。

我怎么知道它总是给我一个file://localhost URL前缀?

奇怪的是,苹果关于URL的文档中缺少一个关于文件URL的部分。

指向本地文件系统上的文件的NSURL称为"文件URL"。要将NSURL转换为代表文件路径的NSString,请使用:

NSString *filePath = [url path];

要检查NSURL是否代表文件URL,请使用:

BOOL isFileURL = [url isFileURL];

请记住,如果您的应用程序被传递了一个文件URL,您将始终可以访问该文件。没有必要检查它是否以任何前缀开头。为什么iOS会给你一个你无法访问的文件?

相关内容

最新更新