RandomAccessFile实现数据的插入

package priv.whs.java;

import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

/**
 *
 * RandomAccessFile实现数据的插入
 *
 * RandomAccessFile继承于Object类,实现了DateInput和DateOutput接口,即可读取也可写入
 * 创建RandomAccessFile对象时还需要指定一个mode参数,该参数指定RandomAccessFile的访问模式,只读方式"r",读写方式"rw"
 *
 * @author whs
 * @date 2022-10-20
 */
public class RandomAccessFileTest {

    @Test
    public void test() {

        RandomAccessFile raf = null;
        try {
            raf = new RandomAccessFile("hello.txt", "rw");

            //将指针调到要插入的地方
            raf.seek(3);
            StringBuilder stb = new StringBuilder((int) (new File("hello.txt").length()));
            byte[] bytes = new byte[1024];
            int len;
            while ((len = raf.read(bytes)) != -1) {
                stb.append(new String(bytes));
            }

            //此时指针在文末,需要重新调回指针到要插入的位置
            raf.seek(3);
            raf.write("xyz".getBytes());

            //将stb中的内容写回到文本中
            //raf.write(stb.toString().getBytes());
            //或者
            raf.writeBytes(stb.toString());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //关闭流
            try {
                if(raf != null)
                    raf.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值