黑马程序员技术交流社区

标题: 请教个ObjectiveC的文件读取操作问题 [打印本页]

作者: 那个Mr_Z    时间: 2014-4-8 09:37
标题: 请教个ObjectiveC的文件读取操作问题

我有2个一样的工程(Foundation Tool工程),2个工程的源码一样,都是这个:
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];

        NSString * filename = @"~/CocoaProject/LearnObjectC/filestrings/filestrings.m";
        filename = [filename stringByStandardizingPath];        
        printf("%s\n", [filename UTF8String]);                                

        NSError * error;
        
        NSString * source = [NSString stringWithContentsOfFile:filename
                                                                                                  encoding:NSUTF8StringEncoding
                                                                                                         error:&error];
        if (error == nil)
        {
                NSLog(@"成功读取:%@", filename);
        } else
        {
                NSLog(@"不成功:%@", [error description]);
        }
        
        printf("%s\n", [source UTF8String]);               
        
    [pool drain];
    return 0;
}按说文件找到了应该跳到这里:NSLog(@"成功读取:%@", filename);
可是很奇怪的是,即便我能正常读取文件,依然会跳到NSLog(@"不成功:%@", [error description]);然后由于[error description]导致程序无法运行,我就是想知道造成这样结果的原因是什么...
作者: yangoo1991    时间: 2014-4-8 10:36
文件路径不对,~是运行设备的目录,而不是你的工程目录,我用模拟器跑的~打印出来是:XXX/Application Support/iPhone Simulator/6.1/Applications/37253134-A710-4892-8270-AC4F6E259A25/
作者: 周宇华    时间: 2014-4-8 10:48
奇怪,我的就成功打印了。
/Users/zhouxf/Documents/code/other/other/main.m
2014-04-08 10:43:37.288 other[3776:303] 成功读取:/Users/zhouxf/Documents/code/other/other/main.m
#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
    //NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
   
        NSString * filename = @"/Users/zhouxf/Documents/code/other/other/main.m";
        filename = [filename stringByStandardizingPath];
        printf("%s\n", [filename UTF8String]);
   
        NSError * error;
   
        NSString * source = [NSString stringWithContentsOfFile:filename
                                                  encoding:NSUTF8StringEncoding
                                                     error:&error];
        if (error == nil)
        {
            NSLog(@"成功读取:%@", filename);
        } else
        {
            NSLog(@"不成功:%@", [error description]);
        }
   
        printf("%s\n", [source UTF8String]);
    }
    //[pool drain];
    return 0;
}


Program ended with exit code: 0




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2