我有一个10G左右的大数据文件,要对其进行处理,然后保存成一个新文件,如何做才能提高效率?是不是应该分块读取,例如一次读100兆,然后在内存中对其进行相应的处理,然后存盘,再次读取100兆 再处理 继续存到同同一文件中 然后再次……C#分块读和存用什么代码比较好?另:我对数据的处理中有移位运算,在分块读写的同时如何保证移位运算的正确性?

解决方案 »

  1.   

    就用一般的FileStream,应该是可以实现分块读取和写入吧。因为它有指针。
    你的移位运算是在整字内部移位的话(比如在int32或int64)分块读写应该没有任何问题。因为你不可能把块的边界刚好分在int的中间吧?
      

  2.   

    byte[] 追加 添加 
    不用 考虑 文件 完整
    但是 注意 了 顺序 
    不然 你要 标记 每段 byte[] 的顺序
     弄完 了 在 合成
    文件 其实 就是 把 分散 的 合并到 一块这个 问题 
    你要 预先 算 出文件 块数 以及 块数 之间 的 关系 
    看 你怎么实现 了 这就是传说 中的算法 ,先 整体 压缩 扯分 后 在压缩组合 时 可以有很多方法 比如 a + b + c+d
    或 (a + b) +(c + d)
    就是 两个算法
      

  3.   

    网上 有 很多 压缩 和 解压 的 API 自己 找
    怎么 合并 一般 自己 就 可以 解决
      

  4.   

    .net 4.0自代内存文件映射,用流什么都不靠谱,还是要用映射,一些做野鸡文件数据库的常用这种方法。