vb.net读取较大文本文件的问题
我现在正在做一个文本数据处理的程序,
主要的任务是把采集后的文本文件数据读出,并绘制曲线图。
该文本文件大小约180M,包含大约30,000,000行数据,每个数据独占一行。
此前,我试过采用常用的ReadLine方法,读取全部数据:
Do While True
FrictionData(i) = SR(0).ReadLine
If FrictionData(i) = Nothing Then Exit Do '读到文件尾则退出
i+= 1
Loop
但是,由于文件较大(显然小文件不是问题),读取的时间比较长(本机上超过40s),而在另一台机器(研华工控机,P4+512RAM)上运行,则程序完全无法进行,观察发现内存过耗。
现在的问题是:
1.必须将全部的文件数据处理完,至少把所有数据的均值求出来;且这一目标要在那台研华的老机器上实现;
2.需要将文件的数据按需要(比如选择某一段,若干个数据)显示成图线。
关于问题1,我试过“先读部分文件求均值,再释放内存”的方法反复执行,直到文件读取完。不过,性能没有明显改观。而且,这种做法存在数值误差(不是真正的全部相加后求均值)。而全部读入内存进行计算又因内存过小而很难完成。我查过使用“文件映射”方法处理大文件的一些资料,但是,限于认识水平,不知道在VB.NET下该如何编写。
关于问题2,最初我想用“读到指定行”的方法来完成,但发现任务量仍然偏大,因为要读取某一位置的内容,似乎需要将这一位置之前的行全部读完,不知道VB.NET中还有没有更为方便直接的手段。
是不是采用ACCESS来管理会更好些?
望知情的朋友就上面两个问题能给我一些提示,不胜感激!