【问题标题】:NSFileManager read files from server?NSFileManager 从服务器读取文件?
【发布时间】:2012-02-13 13:22:41
【问题描述】:

是否可以通过 NSFileManger 从远程服务器加载和处理文件?

fileManager contentsOfDirectoryAtURL:@"https ...

通过 URLConnection 连接以在服务器上进行身份验证。

如果这不可能,那么读取目录内容和下载文件的最佳方法是什么?

【问题讨论】:

    标签: objective-c ios nsfilemanager


    【解决方案1】:

    HTTP 没有目录只有文件的概念,通过 HTTP 同步读取文件的最简单方法是 NSString stringWithContentsOfURL:encoding:error: e.g.:

    NSString *robots = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://*.com/robots.txt"] encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@",robots);
    

    这里是一个 ftp 的例子:

    NSURLResponse *response;
    NSError *error = nil;
    NSData  *data = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"ftp://ftp.ruby-lang.org/pub/misc/webrick-cve-2010-0541.diff"]] returningResponse:&response error:&error];
    if(data == nil) {
        NSLog(@"Error: %@", [error localizedDescription]);
    }else{
        NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
        NSLog(@"got %@",str);
    }
    

    【讨论】:

      【解决方案2】:

      我试过了,还是不行。

      NSFileManager 无法通过 http: 访问服务器上的文件...

      会产生 CocoaError 262 = NSFileReadUnsupportedSchemeError。

      【讨论】: