0

我正在使用以下代码行下载 html 页面的内容并将其保存在目录中:

NSURL *yoyoyo = [[NSURL alloc] initWithString:@"www.google.com"];
NSData *data = [[NSData alloc] initWithContentsOfURL:yoyoyo]; 
//NSData *data = [NSData dataWithContentsOfURL:[NSURL UrlWithString:url]];
//use this data to write to any path as documentdirectory path + filename.html
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *htmlFilePath = [documentsDirectory stringByAppendingPathComponent:@"file.html"];
[data writeToFile:htmlFilePath atomically:YES];
NSLog(@"Tile Directory: %@", documentsDirectory);

文件目录是:

Tile Directory: /Users/xxxx/Library/Application Support/iPhone Simulator/5.1/Applications/D4B3A4CF-E7D0-4D25-A809-B3D3A170A329/Documents

但是,当我到达必须保存文件的路径时,我无法看到 html 文件。我无法解决这个问题。有人可以帮忙吗?

4

2 回答 2

0
NSData *data = [NSData dataWithContentsOfURL:[NSURL UrlWithString:@"yourstringURL"]];

您需要更改"yourstringURL"为一些实际的 URL。如果 URL 不存在或无法下载数据,那么您的data变量将是nil并且不会在文件中写入任何内容。
PS您还可以从 data 变量中获取实际的 html 字符串:

NSString *html = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]; //Remove the autorelease if using ARC

然后将html保存到一个文件中:

[html writeToFile:htmlFilePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
于 2012-06-18T10:46:02.363 回答
0

您需要在此处添加一些错误检查。特别是,检查 NSURL 和 NSData 是否实际包含值(不是 nil),并在取消引用之前验证您的路径对象是否至少包含元素。此外,当您编辑帖子时,您添加了“www.google.com”的 URL,这不是 URL,可能无法解析。NSURL 更喜欢/需要一个完整的 URL,例如“http://www.google.com”,而不是部分 URL。

没有文件出现的最可能情况是 中的nildata,因为这将导致写入不执行。

不过,当您使用它时,我建议您转而使用-[NSData -writeToURL:options:error:]它,因为它是一个更现代的 API,并且如果在写出数据时出现问题,它会返回一个适当的错误。

NSURL *htmlFileURL = [NSURL fileURLWithPath: htmlFilePath isDirectory: NO];
NSError *error=nil;
if (![data writeToURL: htmlFileURL options: NSDataWritingAtomic error: &error]) {
    NSLog( @"Error writing %@: %@", htmlFileURL, error);
}
于 2012-06-18T10:56:40.660 回答