2012-02-24 95 views
2

我的包中有一個大型文本資源。這是一個CSV包含行像將大型文本資源讀取到iOS上的數組中

0,1,100,2.2345 

它超過9MB。什麼是打開和順序讀取它,所以我可以做這樣的事情的最好方法:

myObject->initData(col0, col1, col2, col3); 

(剛剛充塞浮點值成數由文件中的整數索引的多維數組中的一個)

我試着用[NSString stringWithContentsOfFile:]NSScanner來將它讀入一個字符串中,但我不想讓我的內存使用量增加一倍,即使是暫時的。它也很慢。

這樣做的最好方法是什麼?

感謝

回答

3

可以使用NSFileHandle或C API來不斷的讀取,或者您可以使用mmap與NSData

其餘部分是基本的cstring緩衝區處理,或者可以使用NSString一行一行。

如果您可以將它導出爲二進制浮點數而不是CSV,那麼您的生活可能會更輕鬆。

+0

謝謝。我不想使用內存映射數據,所以我會嘗試NSFileHandle方法並按順序讀取。讓我把這個開放一天左右,看看是否有其他人有其他想法(我的意思是,你已經覆蓋了我能想到的每一個基礎,但你永遠不知道)。 – 2012-02-24 14:38:18

+0

C緩衝區處理('fopen','fgets'等等)最後工作。謝謝。 – 2012-02-24 21:55:28

+0

@Tim肯普酷 - 不客氣! – justin 2012-02-24 22:58:00