首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

java 向资料的首行追加一条数据

2013-01-11 
java 向文件的首行追加一条数据我要向一个文件中写N行数据。最后把每一行的数据进行汇总,把汇总信息写到文

java 向文件的首行追加一条数据
我要向一个文件中写N行数据。最后把每一行的数据进行汇总,把汇总信息写到文件的第一行去。这样,我就需要在前面写完之后。在文件第一行追加汇总信息了。(不能先汇总。只能先遍历去写每行的数据。最后把汇总信息追加到第一行去)
[解决办法]
可以用RandomAccessFile,这个类的seek方法,想在文件的哪个位置插入内容都行。所以你的第一行就不在话下了。但是,这个会覆盖你文件中插入位置后面的内容。相当于我们在输入的时候,按了键盘的insert键盘。所以,像你这种情况只能用临时文件来存储原有的内容,然后把要插入的数据写入文件,再把临时文件的内容追加到文件中。
上代码



void insert(String filename,int pos,String insertContent){//pos是插入的位置
    File tmp = File.createTempFile("tmp",null);
    tmp.deleteOnExit();
    try{
    RandomAccessFile raf = new RandomAccessFile(filename,"rw");
    FileOutputStream tmpOut = new FileOutputStream(tmp);
    FileInputStream tmpIn = new FileInputStream(tmp);
    raf.seek(pos);//首先的话是0
    byte[] buf = new byte[64];
    int hasRead = 0;
    while((hasRead = raf.read(buf))>0){
    //把原有内容读入临时文件
    tmpOut.write(buf,0,hasRead);
    
    }
    raf.seek(pos);
    raf.write(insertContent.getBytes());
    //追加临时文件的内容
    while((hasRead = tmpIn.read(buf))>0){
    raf.write(buf,0,hasRead);
    }
    }

}

热点排行