随机访问流(基础了解)及 File类在IO中的作用

RandomAccessFile可以实现两个作用:

        1.实现对一个文件的读和写的操作

        2.可以访问文件的任意位置,不像其他流只能按照先后顺序读取

核心方法:

        1.RandomAccessFile(String name,String mode)  name用来确定文件; mode取r(读)或rw(可读写),通过mode可以确定流对文件的访问权限

        2.seek(long a)用来确定流对象读写文件的位置,a确定读写位置距离文件开头的字节个数

        3.getFilePointer()获得流当前读写位置

public class RandomAccessFileDemo {
    public static void main(String[] args) {
        RandomAccessFile raf=null;
        try{
            raf=new RandomAccessFile("D:/output3","rw");
            int[] arr=new int[]{10,20,30,40,50,60,70,80,90,100};
            for (int i=0;i<arr.length;i++){
                raf.writeInt(arr[i]);
            }
            //读指定位置的数据 ,这里的seek里面的数字指的是字节数的下标从0开始 int类型的字节数是4 4刚好是第二个字节的开始readInt返回4个字节数就是20
            raf.seek(4);
            System.out.println(raf.readInt());
            //这里也可以隔行读取
            for (int i=0;i<10;i+=2){
                raf.seek(i*4);
                System.out.print(raf.readInt()+"\t");
            }
            System.out.println();
            //也可以替换数据 用seek输入要替换数据的第一个字节数的下标 添加数据就替换了
            raf.seek(8);
            raf.writeInt(45);
            for (int i=0;i<10;i+=2){
                raf.seek(i*4);
                System.out.print(raf.readInt()+"\t");
            }

        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if(raf!=null){
                    raf.close();
                }
            }catch(Exception e){
                e.printStackTrace();
            }
        }
    }
}

File类在io中作用

/**
 * 在流对象中只要是以文件作为数据源都可以用File类来指代
 */
public class FileInIoDemo {
    public static void main(String[] args) {
        BufferedReader br=null;
        BufferedWriter bw=null;
        try{
            br=new BufferedReader(new FileReader(new File("D:/output.txt")));
            bw=new BufferedWriter(new FileWriter(new File("D:/output5.txt")));
            String temp="";
            int i=1;
            while((temp=br.readLine())!=null){
                bw.write(i+","+temp);
                bw.newLine();
                i++;
            }
            bw.flush();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                if (br!=null){
                    br.close();
                }
                if (bw!=null){
                    bw.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值