【发布时间】:2013-04-01 19:15:07
【问题描述】:
我有一个非常大的 CSV 文件,大约有 50k+ 行。我使用 CHCSVParser 逐行解析它,效果很好。
我想在数据被解析并添加到 CoreData 时向用户显示某种类型的进度。如果我知道行数,我可以只显示 numLinesParsed/totalLines。我想知道是否有一种快速的方法来计算 CSV 文件中的行数,而无需:
- 将其全部加载到内存中
- 需要几秒钟以上
我不知道我是否应该尝试做这个 Objective C 或者直接用 C 做会更好。
【问题讨论】:
-
批量读取文件怎么样?
-
@AnoopVaidya 它似乎效率低下,因为如果我分批阅读它,我还不如解析它。我不知道是否有一些超级秘密的方法来做类似“file.numberOfLines”之类的事情。
-
你总是可以使用 (bytes_processed/size_of_file)*100,也许不是你想要的,但至少用户知道需要多长时间。
-
你可以通过文件查找,检查nsfilehandler /nsfilemanager
-
仅供参考,对于 C 标准,文件只是一个字节序列。除非您查看它们,否则它不“知道”这些字节中有多少是换行符。因此,您唯一的希望是 iOS 是否保留某种额外的文件元数据,可能包括换行符的数量作为内容摘要的一部分。我对 iOS 的了解还不足以排除这种可能性,但这似乎不太可能。另请注意,您可能可以小块读取文件并在不到“几秒钟”的时间内扫描换行符,但这取决于行的长度。
标签: objective-c c parsing csv file-io