假如有一个文本文件,约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左右吧,你只有一台普通的台式电脑!
...
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左右吧,你只有一台普通的台式电脑!
从来没做过这么大的文本文件操作,等高手……
UtralEdit可以打开你的那个大文件吗
归并排序(用文件进行缓存)
还是通过内存映射将数据写入。
20 G大的
Win32 程序支持最大的内存是1.7G
需要分块去读数据,分块排序lz这样的设计是不合理的 木有意义去做
可以分几步完成:
1.新建一个数据库,按照日期不同创建N张表,表格书就如你的数据形式。在编号上加索引
2.以数据流的形式打开此文件,一步一步的读出数据,然后按照日期判断,添加到各自的表中。直到数据读取完毕。
3.新建一个新的文件,以保存新数据。
4.按日期从小到大,从数据库相应的表中读取数据,然后向新文件追加(AppendText),直到把所有数据读取完毕。说明:
读取时必须以数据流形式,否则20G是打不开的。写文件时也必须以追加形式。
由于文件太大,处理这个数据需要较长时间。
还有一点不理解,为什么要做这个处理?