IO流加强(一)RandomAccessFile类的学习

RandomAccessFile类: 在底层既封装了in流,又封装了out流(流都是单向的)
创建对象的时候给的两个参数:一个是file 一个是模式 r(只读模式) rw(读写模式) rws(读写加同步到设备) rwd(读写加同步到设备)

io流细节1:流都是单向的
io流细节2:IO流都会有一个游标,表示读/写到某个位置了。接下来就是继续对着这个游标操作

正常的 我们用OutputStream 存一个整数 到一个txt文件里面

@Test//OutputStream的写
    public void writeDemo0(){
        try {
            OutputStream out = new FileOutputStream("d:\\a\\b.txt");
            //out.write(97);
            out.write(353);//只写入最后一个字节,如果整数参数值的有效数据大于一个字节,会丢失数据

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

再用RandomAccessFile类 写

@Test//写
    public void writeDemo(){
        try {
            //这个类只要一new对象,如果文件已经存在则读,否则会立刻创建一个新文件
            RandomAccessFile raf = new RandomAccessFile("d:\\a\\a.txt", "rw");
            //raf.write(97);
            raf.write(353); //256+97 只写入整数参数中的最后一个字节,其余的丢弃
            raf.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

再用RandomAccessFile类 读写,以及一些函数

@Test//读写----★最主要是注意控制游标
    public void Demo(){
        try {
            RandomAccessFile raf = new RandomAccessFile("d:/a/a.txt", "rw");
            //写
            for(int i=0;i<5;i++){
                raf.writeDouble(3.14*i);
            }
            //注意,此时游标已经移动到文件末尾了

            raf.seek(16);//pos以字节为单位,进行定位游标 
            raf.writeDouble(0);
            raf.skipBytes(8);//游标往前跳8个字节
            raf.writeInt(20);//游标直接定位
            raf.writeInt(30);

            //读
            raf.seek(0);//把游标定位到文件开始处
            for(int i=0;i<4;i++){
                double d = raf.readDouble();
                System.out.println(d);
            }
            int n1=raf.readInt();
            int n2=raf.readInt();
            System.out.println(n1+","+n2);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值