需求很简单啊,就是读文本文件中的一行,然后提取出这一行内容中的手机号,将其改为用户id号。最后再写入该文本文件中!接着读下一行,直到文件读完!
谢谢大家帮忙啦!明天这个时候结帖!

解决方案 »

  1.   

    简单直接的方法
    将文件读入到内存,每行作为一个String,在读取过程中对每行进行替换操作,然后将String放在ArrayList中,所有行处理完毕后,在将ArrayList中的内容写入文件
      

  2.   

    如果每替换一行就写文件,可以用RandomAccessFile进行操作,不过这样效率很低
      

  3.   

    public void changeFile(String pm_sFileName)
    {
    File file = new File(pm_sFileName);
    FileReader rd = new FileReader(file);
    BufferedReader br = new BufferedReader(rd);

    File outFile = new File(pm_sFileName+".tmp");
    FileWriter b = new FileWriter(file,true);
    try
    {
    String rowStr;
    while((rowStr = br.readLine())!=null)
    {
    long imsi = Integer.parseInt(rowStr);
    // change to UserId
    long userId = changeToUserId(imsi); 
    b.write(String.valueOf(userId));
    b.write("\r\n");
    }
    b.flush();
    //rename to the original File
    file.delete();
    outFile.renameTo(new File(pm_sFileName));
    }
    catch (FileNotFoundException e) 
    {
    System.out.println("文件未找到!");
    e.printStackTrace();

    catch (IOException e) 
    {
    System.out.println("IO异常,无法写文件!");
    e.printStackTrace();
    }
    finally
    {
    b.close();
    rd.close();
    }
    }
      

  4.   

    File file = new File(pm_sFileName);
    FileReader rd = new FileReader(file);
    BufferedReader br = new BufferedReader(rd);File outFile = new File(pm_sFileName+".tmp");
    FileWriter b = new FileWriter(file,true);
    try
    {
    String rowStr;
    while((rowStr = br.readLine())!=null)
    {
    b.writeln(rowStr.replace("",""))
    }
      

  5.   

    发表一些我自己的看法
    1:用ArrayList方法来做不大好,因为也许这个文本文件也许很大(关于批量话单的)。所以如果都先存入ArrayList,系统性能就下降太快了!
    2:读取文本文件后直接写入该文本文件的方法不好,一旦处理过程发现一个手机号错误,需要回滚,就没办法啦。
      

  6.   

    呵呵,从一个文件A里读写到另外一个文件B里不就完了。
    然后,删除A,重命名B。
      

  7.   

    qingyuan18(zealot_tang)的new File就是生成一个文件了?晕!
    有没有比较完整的?
    就是读文本文件中的一行,然后提取出这一行内容中的手机号,将其改为用户id号。最后再写入新文本文件中!接着读下一行,直到文件读完!然后把原来文件删除,新文件名改成原来文件名。呵呵
      

  8.   

    看看我这个:
    BufferedReader bin = new BufferedReader(new FileReader("a.txt"));
    StringBuffer sb = new StringBuffer();
    String s = bin.readLine();
    while(s!=null) {
      s = s.replaceAll("[\\d]{11,12}","用户ID号");//模式匹配
      sb.append(s+"\n");
      s = bin.readLine();
    }
    System.out.println(sb.toString());
      

  9.   

    之后:
    new File("a.txt").delete();
    BufferedWriter bout = new BufferedWriter(new FileWriter("a.txt"));//
    bout.write(sb.toString());//不然就读一行就写一行
      

  10.   

    BufferedReader bin = new BufferedReader(new FileReader("a.txt"));
    StringBuffer sb = new StringBuffer();
    String s = bin.readLine();
    while(s!=null) {
      s = s.replaceAll("[\\d]{11,12}","用户ID号");
      sb.append(s+"\n");
      s = bin.readLine();
    }
      

  11.   

    我把整个流程说一下吧,大家大概理解有错!
    这是一个上传文件的流程(B/S):
    1:页面选择要上传的文本文件
    2:在上传过程中,把文本文件里的关于手机号的那部分取出来,跟其它接口报文做一次交互,得到user_id,然后把这个user_id替换原来手机号。
    3:文件传到相应的服务器上