Re: [問題] 請問關於讀很大的文字檔

看板C_Sharp (C#)作者 (待救的小米)時間20年前 (2004/11/15 17:36), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串2/3 (看更多)
※ 引述《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

140.109.235.41 11/15, , 1F
因為看C#不到三天...實在是看不懂你的說明
140.109.235.41 11/15, 1F

140.109.235.41 11/15, , 2F
可不可以寫得更通俗一點...萬分感謝
140.109.235.41 11/15, 2F
文章代碼(AID): #11c7YlFN (C_Sharp)
討論串 (同標題文章)
文章代碼(AID): #11c7YlFN (C_Sharp)