日期:2014-05-18  浏览次数:21293 次

C# 读取大文件~急
最近一直在搞文件(cap格式)的读取解析,程序在解析大文件时就挂了。。。
目前我的程序500M以下的文件可以正常读取解析。速度和性能还可以接受(200M 耗时20S左右)。但500M以上的话,内存增长导致内存溢出的问题。使的我很郁闷,始终没解决。在此向各位高手请教~~大家一起来学习。

程序中我使用了:分块解析一个大文件和多线程。之前查过有别人说用到“内存映射”技术。本人刚接触C#,对那个技术还不了解。希望各位歌手指点!!!

------解决方案--------------------
这个要看怎么具体的情况 了
也许转化的时间都又浪费了
------解决方案--------------------
我来关注这个问题
------解决方案--------------------
看应用吧,实在不够的话用内存映射文件
------解决方案--------------------
学习,帮顶!
------解决方案--------------------
“cap”是什么格式的文件?“在读取1G以上的文件时,内存和数据如何申请和保存呢”,
的确,通常的做法都是完整读入内存,再进行解析,这里我提供一个思路:

XmlReader 类 ,听说过吧,它就是为解决XmlDocument读大的xml文件,须一次性读入内存带来的副作用而产生的。它不需要一次性读入,提供 XML 数据进行快速、非缓存、只进访问的读取器,每次读入一个节点,由应用来决定解析!

楼主,你可以通过反射器看看XmlReader 的Read函数如何实现的,理解后,写出自己的cap流模式解析类。
------解决方案--------------------
用文件位图解决不了么?或者你的程序就是要求一次性入内存?