我有一个大文本文件,其中存储了我的程序数据。它基本上是一个CSV文件,由浮点数组成,每行一个。例如:
6.3580820e+03
6.3589883e+03
6.3592695e+03
6.3592695e+03
6.3635508e+03
6.3695820e+03
我知道如何读取行的文件行,但是我仍然会得到一个包含内存中所有数据的数组。我更愿意访问不同的行,例如readFromLine:32 有没有办法在不加载或读取整个文件一次的情况下这样做?如果不是我应该如何转换我的数据? SQLite的?
答案 0 :(得分:0)
我更愿意访问不同的行,例如readFromLine:32 有没有办法在不加载或读取整个文件的情况下执行此操作 一次?
您可以使用NSInputStream
来读取文件,输入流将根据需要管理文件的部分内容。
如果不是我应该如何转换我的数据? SQLite的?
至少对于您的应用程序而言,CSV文件的问题在于,知道找到给定行的位置的唯一方法是从头开始读取文件并计算行数。如果你有一个索引告诉你每行的文件开头的偏移量,或者每10行或者第100行的偏移量,那么你可以查找该行的位置(或最接近的前一行)索引并从索引条目指示的偏移量开始读取数据文件。使用像SQLite这样的数据库格式将是另一个好策略。您还可以将大文件拆分为较小的文件,这样只加载文件的相关部分就不会占用大量资源。