如题。。谢谢了。。具体点最好···

解决方案 »

  1.   

    这个1G的文件是有一定顺序给写进去的吧。。我以前处理过百来兆的,方法是把这些数据用文件流给读出来,然后每条做成一个数据库记录,然后插到数据库里面,用sql的排序,然后再从结果集里面导出来,要是还存成文件,那就再写回去,不存文件,那就按照别的办法处理。一次性加载全部的文件,或许JVM内存会吃不消的,你可以部分部分的去加载。具体这个方法,你可以去百度一下。
      

  2.   

    不错的办法,最后合并一个文件时,可以用io中的SequenceInputStream类
      

  3.   

    楼主要写出文件的具体内容结构。超大文件的排序,算法上面,可以参考数据结构中,外部排序,的相关内容。当然,先拆分,后组合,也是个不错的方案。如果,不要求速度的话,解析文件,插入数据,排序,生成排序问。
    是个和好的方案。我的方案,是,先拆分,后组合。
    估算时间:硬盘读写速度,按 60MB/s的读取速度,40MB/s的写入速度。
    那么,读取1G文件,大概需要17s,而写入大概要25s时间.先读取文件的部分数据到内存当中,排序,并生成临时文件。
    这样,1G文件,就会被拆分成多个分别排序的小文件。
    然后,取其中两个小文件,合并成一个大点的排序文件,如此反复,最终生成1G的大排序文件。