Re: [問題] 請問關於讀很大的文字檔
※ 引述《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
140.109.235.41 11/15, 1F
→
140.109.235.41 11/15, , 2F
140.109.235.41 11/15, 2F
討論串 (同標題文章)
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章