我想閱讀一個文本文件並對該數據執行一些操作。閱讀長長文件
文件大小爲67 mb
我怎麼讀。
文件爲文本格式。
其工作在模擬器但在設備和崩潰給予內存警告。
代碼
NSString *content = [[[NSString alloc] initWithContentsOfFile:fileName usedEncoding:nil error:nil] autorelease];
崩潰,當這句話完整。
感謝,
希亞姆帕爾馬
我想閱讀一個文本文件並對該數據執行一些操作。閱讀長長文件
文件大小爲67 mb
我怎麼讀。
文件爲文本格式。
其工作在模擬器但在設備和崩潰給予內存警告。
代碼
NSString *content = [[[NSString alloc] initWithContentsOfFile:fileName usedEncoding:nil error:nil] autorelease];
崩潰,當這句話完整。
感謝,
希亞姆帕爾馬
快點,試試彼得建議的。問題是一次加載它,因爲你有大約20 MB可用於你自己的應用程序,我相信。如果你使用的是NSInputStream,你可以分片加載,因此你不會一次填滿整個內存。另請閱讀這個答案的另一個問題:Objective-C: Reading a file line by line
我有一個70 MB的文件,使用此代碼來讀取文件並不能幫助我它線性增加內存。誰能幫我? – GameLoading 2011-03-21 06:21:14
謝謝老兄我做了這個.... :) – GameLoading 2011-03-21 09:59:45
你開始讀從- (void) viewDidLoad
文件?這可能是問題所在。試着開始讀它在不同的線程,如:[self performSelectorInBackground:@selector(method) withObject:nil];
它在另一個類 – GameLoading 2011-03-18 13:27:41
而你不從viewDidLoad初始化那個類?我問的原因是我有類似的問題,並且由於默認加載時發生超時而導致崩潰。你想讀什麼樣的文字?不可能將文本文件分成幾個文件? – Mikael 2011-03-18 13:31:57
崩潰很可能是因爲它試圖在內存中一次加載67兆字節,這給出了巨大的內存錯誤。如果你在後臺執行它,你仍然會得到這個錯誤;) – 2011-03-21 13:59:00
你還沒有定的代碼,但如果您使用stringWithContentsOfFile
獲得整個文件考慮使用NSInputStream或標準輸入輸出,以閱讀和處理以上的增量顯示。
它崩潰...... – GameLoading 2011-03-18 13:37:50
像彼得說的...發表一些代碼。現在它可以是任何東西。 – Mikael 2011-03-18 13:41:20
它不在主線程中工作它如何在另一個線程上工作? – GameLoading 2011-03-18 13:43:10
你可能給我們一些額外的信息,你正在做什麼與文本呢?所以我們知道如何解決這個問題。如果你需要那裏的所有數據,那麼你最終可能會以67MB,但以另一種格式。但是,如果它像XML或JSON文件一樣,則處理起來要容易得多。 – 2011-03-21 08:28:44
它是簡單的文本文件.. – GameLoading 2011-03-24 10:58:55