作者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
1F:→ phe:因为看C#不到三天...实在是看不懂你的说明 140.109.235.41 11/15
2F:→ phe:可不可以写得更通俗一点...万分感谢 140.109.235.41 11/15