0

我有一个大型文本文件,其中存储了我的程序的数据。它基本上是一个 CSV 文件,由浮点数组成,每行一个。例子:

6.3580820e+03
6.3589883e+03
6.3592695e+03
6.3592695e+03
6.3635508e+03
6.3695820e+03

我知道如何逐行读取文件,但是我仍然会得到一个包含内存中所有数据的数组。我更喜欢访问一个不同的行,例如 readFromLine:32 有没有办法在不加载或读取整个文件的情况下做到这一点?如果不是,我应该如何转换我的数据?SQLite?

4

1 回答 1

0

我更喜欢访问一个不同的行,例如 readFromLine:32 有没有办法在不加载或读取整个文件的情况下做到这一点?

您可以使用NSInputStream来读取文件,输入流将根据需要管理将文件的部分读取到内存中。

如果不是,我应该如何转换我的数据?SQLite?

至少对于您的应用程序而言,CSV 文件的问题在于,知道在哪里可以找到给定行的唯一方法是从开头读取文件并计算行数。如果您有一个索引告诉您每行或每第 10 行或第 100 行或其他任何内容的文件开头的偏移量,那么您可以在索引并从索引条目指示的偏移量开始读取您的数据文件。使用像 SQLite 这样的数据库格式将是另一个好策略。您还可以将大文件分解成更小的部分,这样仅加载文件的相关部分就不会占用太多资源。

于 2013-03-02T19:10:03.690 回答