假如有一个文本文件,约20G左右大小内容类似:
...
535424  小王  1986-01-11
435435  小欣  1987-07-11
364514  小丽  1987-07-11
154878  小晋  1979-02-18
...
现在要先按日期排序,再按编号排序,然后保存到硬盘上
最后保存到硬盘上的文本应该是这样的
...
154878  小晋  1979-02-18
535424  小王  1986-01-11
364514  小丽  1987-07-11
435435  小欣  1987-07-11
...备注:这个文本很大,暂且当做20G左右吧,你只有一台普通的台式电脑!

解决方案 »

  1.   

    为何要将这样的数据放到txt中……
    从来没做过这么大的文本文件操作,等高手……
      

  2.   

    不知道你想问什么!!!难度是测试txt能放多少东西???
      

  3.   

    大文件都是用文件映射做的,就像UtralEdit.
    UtralEdit可以打开你的那个大文件吗
      

  4.   

    内存映射,CreateFileMapping、MapViewOfFile,分块进行映射,然后进行读取,排序。
    归并排序(用文件进行缓存)
    还是通过内存映射将数据写入。
      

  5.   

    20G, 看起来还全部是个人描述信息。 这是多少人口呵呵   上面几楼都提到了处理时回涉及的问题,数据量太大,一般一次性加载不可能,分段并加入优化的一些处理方式或许可行。但是个人觉得,这些信息有些明显的特点:格式一致,每条记录信息简单。对于如果考虑要将这些信息做“排序”的工作,有限的相当长的一段时间是可以做完的,但是咱们做事,得尽量讲个效率是不!  我个人想,是否可以分段,并转化格式,如XML的,再进行排列的处理,当然加入强机器更好。但lz说就一台一般的机器,那就看自己的算法之类的,是否处理高效了.....
      

  6.   

    先導入數據庫,排序後,再輸出Txt文件
      

  7.   

    你还是 建立做个 tex把 一个txt很明显不行 就像数据库一样 你不能 只有一个表
      

  8.   

    20G的文本文件你能打开吗? 肯定看不了。你这种初始的设计将数据保存到一个TXT就是个错误!
      

  9.   

    用数据库库把,20G恐怕xml,access都用不起来,用sql server排序就用sql中的order by
      

  10.   

    现在要先按日期排序,再按编号排序?
    20 G大的
    Win32 程序支持最大的内存是1.7G
    需要分块去读数据,分块排序lz这样的设计是不合理的 木有意义去做
      

  11.   

    由于文件很大,一步完成不现实。
    可以分几步完成:
    1.新建一个数据库,按照日期不同创建N张表,表格书就如你的数据形式。在编号上加索引
    2.以数据流的形式打开此文件,一步一步的读出数据,然后按照日期判断,添加到各自的表中。直到数据读取完毕。
    3.新建一个新的文件,以保存新数据。
    4.按日期从小到大,从数据库相应的表中读取数据,然后向新文件追加(AppendText),直到把所有数据读取完毕。说明:
        读取时必须以数据流形式,否则20G是打不开的。写文件时也必须以追加形式。
        由于文件太大,处理这个数据需要较长时间。
    还有一点不理解,为什么要做这个处理?