可以通过seek()方法设置文件指针位置

解决方案 »

  1.   

    RandomAccessFile  可以随机读取
    public class RandomAccessFile类
    {
    public static void main(String[] args)
    {RandomAccessFile in_and_out=null;
     int data[]={124,389,33,256,-90,34,21,7,100,25};
     try
     {in_and_out=new RandomAccessFile ("write_in_here.txt","rw");
     }
     catch(FileNotFoundException e)
     {System.out .println ("??????");
     }
     catch(IOException e)
     {System.out .println ("??????");
     }
     try
     {for(int i=0;i<data.length;i++)
     in_and_out.writeInt(data[i]);
    for(int i=data.length -1;i>=0;i--)
      {in_and_out.seek (i*4);
       System.out .print (","+in_and_out.readInt ());
      }
      in_and_out.close ();
     }
     catch(IOException e)
     {System.out .println ("??????");
     }

    }
    }
    这是一个例子,你用的照得尽管用。(绝不追究版权问题^_^)
      

  2.   

    newman0708(春华) :谢谢 呵呵。
    我的程序是这样的:
    RandomAccessFile fout = new RandomAccessFile(targetFileName,"rw");
    String nextLine = fout.readLine();
    while(nextLine != null)
    {
      if(nextLine.indexOf("</tag>") != -1)
      {
            fout.setLength(fout.length() + insertStr.length());                
            fout.writeBytes("\r\n");            
       }
                nextLine = fin.readLine();            
    }
    我的意思是每读取到一行含有</tag>的行,就在这一行后加一个空行。但上面这段程序却把文件后面的字符覆盖了。该怎么作?
      

  3.   

    当然会件后面的字符覆盖!你要是不copy一份的话是无法办到的!
    除非用数据库!用xml其实也是把内容解析后copy到ram的,
    但对用户是透明的!
    可能你用起来感觉会爽一点!
      

  4.   

    当然会件后面的字符覆盖!你要是不copy一份的话是无法办到的!
    除非用数据库!用xml其实也是把内容解析后copy到ram的,
    但对用户是透明的!
    可能你用起来感觉会爽一点!
      

  5.   

    建一个字符串缓存(StringBuffer),读取的内容放到这个缓存中,操作完毕后,再删除源文件,重新写入就可以了.
      

  6.   

    谢谢大家,马上就给分。
    还有少许问题:StringBuffer可以存储多大?
    如果用java做一个高效的字处理软件,实现“保存”功能的时候是不是把编辑器里所有的内容读取到一个StringBuffer,然后像 haichuang(不戒和尚)说的那样,删除文件后再重新写入?
    这样作对大文件可以吗?
      

  7.   

    可以2G ,就是int的范围!哪要看你做怎样一个软件了!
    没字体的话,应该是这样!