我有一个非常大的 CSV 文件,大约 50k+ 行。我使用 CHCSVParser 逐行解析它,效果很好。
当数据被解析并添加到CoreData中时,我想向用户显示某种类型的进度。如果我知道行数,我可以只显示 numLinesParsed/totalLines。我想知道是否有一种快速的方法来计算 CSV 文件中的行数,而无需:
- 全部加载到内存中
- 花费超过几秒钟
我不知道我是否应该尝试做这个 Objective C 或者直接用 C 做会更好。
我有一个非常大的 CSV 文件,大约 50k+ 行。我使用 CHCSVParser 逐行解析它,效果很好。
当数据被解析并添加到CoreData中时,我想向用户显示某种类型的进度。如果我知道行数,我可以只显示 numLinesParsed/totalLines。我想知道是否有一种快速的方法来计算 CSV 文件中的行数,而无需:
我不知道我是否应该尝试做这个 Objective C 或者直接用 C 做会更好。
为什么不以字节为单位获取文件的大小,然后将其除以每行的字符(如果每行具有相同数量的字符)或将其除以处理的字符数以获得百分比?
ups:豪尔赫·努涅斯(Jorge Nunez)已经说过了……
我认为 C 没有办法在不将文件加载到内存的情况下获得行数,因为这似乎是一个操作系统级别的函数,至少对我来说......
如果您在 UNIX 机器上,您可以使用“wc”命令来获取任何文件的行数。您应该能够通过“system”命令使用 C 运行它并将输出重定向到一个临时文件,然后您可以非常快速地访问该文件并从那里解析行数。
如果您使用的是 Windows,您可以使用 findstr 命令 'findstr /R /N "^" file.txt" 来获取行数。注意,这将打印行一个冒号,然后是所有行文件。我相信你可以把这个输出减少一点,但我不知道该怎么做。