看板 C_Sharp 關於我們 聯絡資訊
※ 引述《phe (hmmm)》之銘言: : 我有一個大約250 MB的文字檔需要處理, 電腦的記憶體有1GB : 我希望能一次就把這文字檔所有的內容讀進一個string當中 : 所以我用以下方法 : const string FILE_NAME = "input.txt"; : StreamReader sr = new StreamReader(); : string buffer; : buffer = sr.ReadToEnd(); : sr.Close(); : 結果出現OutOfMemoryException : 如果我用以下的方式 : string context = ""; : while((buffer = sr.ReadLine) != null) : { : context += buffer; ^^^^^^^^^^^^^^^^^^^^^^^^^^ 這邊很慢 : } : 這樣可行的通, 可是讀檔案要超久(約30 min) : 想請問: : 1. 檔案大小只有250MB < 記憶體大小 1GB 甚多, 為什麼還是會out of memory? : 2. 有更有效率的方式解決這問題嗎? 你為什麼不一行一行讀呢? 如果你真的堅持一次要全讀進來 我抄一段VS 2005 snippet的程式碼 你試看看速度有沒變快 你能不能接受 Dim allText As String Try allText = My.Computer.FileSystem.ReadAllText("test.txt") Catch fileException As Exception Throw fileException End Try 如果連這方法都很慢 那我勸你不要全讀進來了 因為這是微軟提供的程式碼片段 連他給你的都很慢了 你應該很難找到一個很快的方法 -- 生物資訊研究室:每天都會更新文件,提供生物資訊教學,生物字典。 http://www.bioinformatic.idv.tw -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.73.177
phe:因為看C#不到三天...實在是看不懂你的說明 140.109.235.41 11/15
phe:可不可以寫得更通俗一點...萬分感謝 140.109.235.41 11/15