【问题标题】:How to load a txt file into an array如何将txt文件加载到数组中
【发布时间】:2011-03-22 22:12:46
【问题描述】:

我编写了一个将 txt 文件加载到数组中的方法。但是,我对它并不满意,因为它在我的初学者眼中看起来非常麻烦(我确定我不需要 50% 的代码),而且我不知何故想知道如何指定我的 txt 的确切格式文件,例如NSUTF8StringEncoding.

这是我的代码:

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
 NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory

 NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"Sample.txt"]; 

if (filePath) { // check if file exists - if so load it:
    NSString *myText = [NSString stringWithContentsOfFile:filePath];
    if (myText) {textView.text=myText;}
}

对于如何完善此内容并指定正确格式的任何建议,我将不胜感激。

【问题讨论】:

    标签: iphone objective-c cocoa-touch


    【解决方案1】:

    假设您的文件在您的捆绑包中,请尝试以下操作:

    NSString * filePath = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"txt"];
    
    NSError * error = nil;
    
    NSString * contentsOfFile = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
    

    【讨论】:

    • 这里获取filePath的方法不同。您的答案假定 Sample.txt 与应用程序捆绑在一起。但是,如果它是从应用程序的早期实例保存到文件中的,则应使用问题中的原始方法。
    • 没错,我假设文件在捆绑包中。将纠正我的答案。
    • 一旦你修复了这个错误,你应该用stringWithContentsOfFile:encoding:error:替换你错误的方法调用。当您尝试将使用的编码写入地址 4(NSUTF8StringEncoding 的值)时,您使用的方法会给您一个 ExcBadAccess。
    【解决方案2】:

    进入一个数组?你的意思是变成一个字符串,因为这正是你正在做的......

    不过,你的代码看起来还不错,而且大部分只是为了抓取文档目录路径,这不是你的错,因为根据许多知识库,它正是这样做的。

    从编码开始,不推荐使用 stringWithContentsOfFile,请使用 stringWithContentsOfFile:encoding:error: (参见文档) 并且您将能够指定正确的编码并获得准确的错误描述。

    【讨论】:

    • @Nick Weaver:afaik,文档目录!= 资源目录
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多