作者seagal (待救的小米)
看板C_Sharp
標題Re: [問題] 請問關於讀很大的文字檔
時間Mon Nov 15 17:41:56 2004
※ 引述《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