一个很大的txt文件,内容如下:
1000|ABC|...
2000|DFD|...
1000|OPF|...
2000|JKD|...
...
有好几万条!
现在需要对相同数字对应的每条信息进行文件存储(比如1000对应的所有信息存放进一个文件),有什么好方法,大家提供一下哈!

解决方案 »

  1.   

    按行读,再弄个hashmap:key为10000这种值,value为放的文件。
    然后读一行看看hashmap有没有key存在,有就找到那个文件,append进去,没有就新建一个文件,同时key扔进去。只会这种了。
      

  2.   

    没说清楚,hashmap的value存放文件路径。
      

  3.   

    如果是linux,可以直接用grep
    grep ^1000 your_file > your_new_file
      

  4.   

    如果是dos,而且是由规律的,即数字只出现在开头,可以用findstr
    findstr ^1000 your_file > your_new_file
      

  5.   

    如果非要用程序来做,那就读文件,写文件
    2楼的Map改为key为10000这种值,value为文件输出流循环读文件取一行readLine
    取出该行的前面字符串,如1000
    取出的1000这样的字符串到Map去取文件输出流,如果不存在,怎创建该流,并保存到Map
    把从文件读取的该行的字符串输出直到文件循环结束
    遍历Map,逐个关闭文件输出流
      

  6.   

    9楼 用系统命令的话 是不是也用java的Process调用外部指令来实现?
      

  7.   

    太低估java能力了,几万条完全可以一次读进内存,然后在分类存储。
      

  8.   


    我不排斥系统命令,但是shell下有个问题,不清楚这几万行一共有多少种数字。即使说了0000-9999的范围。循环10000次grep?如果碰到10000行里,1000有9000行,2000有900行,90行3333,10行4321(只在运行期知道这个情况)。那循环grep处理岂不是更浪费时间。
      

  9.   

    碰到你说的这种情况,java也一样走完整个文件循环,因为java也不知道到底有几个1000,要取出前面的1000,才能判断,同样的grep也可以先看看1000是否存在,然后再重定向到文件,而且可以用wc来取得文件的行数,作为循环,而一个grep命令,就能同时把9000行1000输出到文件
    一个grep命令,和java读文件,取字符串,判断字符串相比,我认为grep效率要高
    换句话说,如果同样能达到目的的处理,我认为还是系统命令比自己写的程序效率要高
      

  10.   

    map ,put key value, iterator map,writeout