iPhone - 来自本地文件URL的NSData

时间:2009-10-03 17:29:14

标签: iphone nsdata nsurl

我有一个NSURL对象,它为我提供了本地文件的路径(在文档文件夹中)。我想用这个文件的内容填充NSData对象。尝试使用dataWithContentsOfURL:,但这失败了。我知道该文件存在,因为iPhone SDK返回路径。

有人可以告诉我如何从本地文件的NSData获取URL对象吗?

感谢。

5 个答案:

答案 0 :(得分:159)

// Given some file path URL: NSURL *pathURL
// Note: [pathURL isFileURL] must return YES
NSString *path = [pathURL path];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path];

答案 1 :(得分:28)

要完成这项工作,您只需要这样做:

NSURL *imgPath = [[NSBundle mainBundle] URLForResource:@"search" withExtension:@"png"];
NSString*stringPath = [imgPath absoluteString]; //this is correct  

//you can again use it in NSURL eg if you have async loading images and your mechanism 
//uses only url like mine (but sometimes i need local files to load)
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:stringPath]];
UIImage *ready = [[[UIImage alloc] initWithData:data] autorelease];

答案 2 :(得分:2)

确保您的本地网址以“file://”开头 那么你只需要这样做:

 NSData *fileData = [NSData dataWithContentsOfFile:fileURL.path];

答案 3 :(得分:0)

对于swift3,我从以下网址获得了答案

(在使用phonegap插件捕获图像后,我得到了以下路径

file:///var/mobile/Containers/Data/Application/B64B06DE-7976-45CF-9BE2-661F0F309A06/tmp/abcded.jpg)

https://stackoverflow.com/a/41043447/6383908

如果让videoURL = URL(string:urlString),让videodata =试试?数据(contentsOf:videoURL){      //在这里添加Alamofire的代码 }

答案 4 :(得分:0)

guard let data = FileManager.default.contents(atPath: path) else
    { ...