想要在进行某项操作成功后,如打印,就在原文本文件对应的记录行前插入符号'@'
如:
原文件数据:
4 3 2 4 1 06/10/16/22/24/35//05/34
5 2 8 16 1 02/11/17/19/20/28/31/35
6 3 7 14 1 04//01/09/15/17/19/27/35
打印完第一条记录后文件内容变为
@4 3 2 4 1 06/10/16/22/24/35//05/34
5 2 8 16 1 02/11/17/19/20/28/31/35
6 3 7 14 1 04//01/09/15/17/19/27/35
麻烦给个解决方案。偶对IO不是很熟悉,多谢啦~!

解决方案 »

  1.   

    Java实现这个有随机读取类,你可以看一下JDK,java.io.*;就知道了。呵呵,满简单的,况且现在有中文版的JDK,SUN中国社区提供的。
      

  2.   

    我自己写的:
    RandomAccessFile rF = new RandomAccessFile(selectFile, "rw");
    for(int i=0; i<id;i++)    //id是行数控制
    {
    rF.readLine();
    } rF.writeByte('@');
    rF.close();这样子的结果是:
    @ 3 2 4 1 06/10/16/22/24/35//05/34
    5 2 8 16 1 02/11/17/19/20/28/31/35
    6 3 7 14 1 04//01/09/15/17/19/27/35覆盖了那条记录的第一字节,有什么办法可以实现插入一个符号'@'?恳请指点~!!!
      

  3.   

    把你要改的那行先读出来String line = rf.readline();
    加上“@“,line = "@"+line ;
    然后再写进去,rf.writeBytes(line);
    具体自己弄咯
      

  4.   

    jiqi62120() 的方法我也试过了
    RandomAccessFile rF = new RandomAccessFile(selectFile, "rw");
    for(int i=0; i<2;i++)   //id是行数控制
    {
    rF.readLine();
    }
    long p = rF.getFilePointer();
    rF.seek(p);
    rF.writeByte('@');
    rF.close();原文件是:
    1111111111111
    2222222222222
    3333333333333
    4444444444444
    5555555555555
    6666666666666
    运行后:
    1111111111111
    2222222222222
    @2222222222222
    4444444444444
    5555555555555
    6666666666666这样会把插入记号的行数据覆盖,也不对
      

  5.   

    进行了一下修改发现新问题。
          RandomAccessFile rf = new RandomAccessFile(f, "rw");
             String s = null;
             for(int i=0; i<1; i++)
             {
               rf.readLine();
             }          long p = rf.getFilePointer();          s = rf.readLine();
              System.out.println(s);
              s = "@" +s;          rf.seek(p);                  //设置了一下文件指针          rf.writeBytes(s);
              rf.writeByte('\n');
              rf.close();
            }原文件:
    1111111111111
    2222222222222
    3333333333333
    4444444444444
    5555555555555
    6666666666666运行后:
    1111111111111
    @2222222222222(*)3333333333333 //(*)处在用记事本打开时显示为一个黑色小方块,但是
    4444444444444                  //粘贴到csdn时又是正常的换行,是否和编码有关呢?
    5555555555555
    6666666666666
      

  6.   

    RandomAccessFile rf = new RandomAccessFile(f, "rw");
     for(int i=0; i<6; i++)
           {
              s=rf.readLine();
               s=s+'@';
               rf.writeChars(s);
               System.out.println(s);
            long p = rf.getFilePointer();
           rf.seek(p);                  
            }
      

  7.   

    我记得java的io有个什么linenumber的过滤器,你试试看
      

  8.   

    to wenqin2006() :
    好像你的代码和我的需求不一样,而且用writeChars()把用来按单字节存储的都扩展成双字节了