Obj-C使用fscanf或同等文件读取CSV文件

时间:2013-11-25 23:59:59

标签: objective-c c csv io scanf

因此,我需要使用Objective-C读取具有最小(或合理接近最小)内存开销的CSV文件。现在我大致这样做:

NSData *data = [NSData dataWithContentsOfFile:filename];
NSString *fileContents = [NSString stringWithUTF8String:[data bytes]];
NSArray* rowStrings = [fileContents componentsSeparatedByString:@"\r"];
for (NSString* rowString in rowStrings){
    //Analyze row here
    NSArray* cells = [rowString componentsSeparatedByString:@","];
    NSMutableArray* row = [[NSMutableArray alloc] init];
    for (NSString* cell in cells){
        //Analyze individual cell here
    }
}

但这不行,因为它基本上将整个文件加载到内存中并从那里开始走下坡路。我相信我可以使用fscanf来获得我需要的结果,但我无法弄清楚如何做到这一点。我可以在网上找到很多关于fscanf用于读取具有已知数量的“单元格”(逗号分隔值)的文件的示例,但是当我想要使用任意大小的文件时,我找不到任何示例。我认为这应该通过用逗号分隔文件来完成,并且每次发现换行时只是识别它并对它做一些事情,这实际上允许我逐个单元地读取文件,但我不知道如何用fscanf这样做,所以如果有人可以提供帮助那就太好了。

谢谢。

0 个答案:

没有答案