参考下面链接中9楼的回复
http://topic.csdn.net/u/20091014/08/1d1973e9-157c-40d7-b289-4d650bf48a55.html

解决方案 »

  1.   

    放数据库好了,或直接使用oledb数据库驱动来读取文件,把文件当作一个一列的数据表来读取。
      

  2.   


    实际中的情况是这样的,现在有几十G左右的一个文本,里面的数据是从外界采集进来的信号,通过Matlab对这个文件做完各种算法处理后,要把这个文件中的数据通过数据采集卡输出到外围的其他设备,做下一步的信号处理。数据采集卡会为输出的数据开辟两个缓存,假设为缓存a和缓存b。输出数据的时候首先输出缓存a中的数据,输出完毕缓存a中的数据后,立刻输出缓存b中的数据,输出完毕缓存b中的数据后,又立刻输出缓存a中的数据。就这样不断地运行下去。   当输出完毕a中的数据后,就会触发上面所说的事件a,在事件a中要做的事情就是要把下一次待输出的数据写入缓存a,同理,当触发b事件时,向缓存b写入下次要输出的数据。现在要做的就是首先从文本中读取1000个数据写入缓存a,然后再取接下来1000个数据到缓存b。这样反复的进行下去。把文件换成数组就可以按照上面的过程来做,我现在采取的办法就是先把这个文件读入内存中,然后把数据从内存写入到缓存。但从文件到内存这个时间花费太大了。所以就想直接从文件写入缓存。但直接读我不会弄了。 在这里可不可以使用文件映射内存?望各位指教!
      

  3.   

    分析楼主的需求,其实所谓的缓存A 就是 == 缓存B -_-~~!
    输出A(1000行),再输出B(1000行),跟连续输出 A 1000 行 两次没区别,因为没有并发.B是等待A完成再进行
    那么的话其实只要  FileStream,StreamReader 一行一行的向后读就是了.. ...
      

  4.   

    數據量大,也不需要一下A事件讀1000行,一下B事件讀1000行,再由a事件讀1000行吧。你直接在一個事件中,1000行一次的進行讀取不就行啦。LZ可以在事件中,通過變量來控件,一次性讀取1000行數據,這樣周而復始就行了。