IO流-随机访问流、File类在IO的作用(九)

IO流-随机访问流、File类在IO的作用(九)

  1. RandomAccessFile可以实现两个作用:

    • 实现对一个文件做读和写的操作。
    • 可以访问文件的任意位置,不像其他流只能按照先后顺序读取。

    在开发某些客户端软件时,经常用到这个功能强大的可以"任意操作文件内容"的类,比如:软件的使用次数和使用日期,可以通过本类访问文件中保存次数和日期的地方进行比对和修改。java很少开发客户端软件,所以在java开发中这个类用的相对比较少。

  2. 核心的三个方法:

在这里插入图片描述

  1. 具体的代码实现:

    import java.io.RandomAccessFile;
    
    public class RandomAccessFileDemo {
          
          
        public static void main(String[] args) {
          
          
            RandomAccessFile raf=null;
            try {
          
          
                raf=new RandomAccessFile("d:/sxt7.txt","rw");//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]);
                }
                raf.seek(4);//比如:10:0 1 2 3 (4个字节) 20:4 5 6 7 (4个字节),而seek(4),就是指针从第4个字节开始读取,从第四个字节开始返回多少个
                System.out.println(raf.readInt());//readInt()是读取4个字节,也就是从刚才的第四个字节开始,读取四个字节,也就是输出20
    
                //隔一个读一个数据
                for (int i=0;i<10;i+=2){
          
          
                    raf.seek(i*4);//隔四个字节读四个字节
                    System.out.print(raf.readInt()+"\t");
                }
                System.out.println();
    
                //在第8个字节位置插入一个新的数据45,替换之前的数据30
                raf.seek(8);
                raf.writeInt(45);//从第八个字节开始替换,替换四个字节,替换的数值为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();
                }
            }
        }
    }
    
  2. File类在IO中的作用

    当以文件作为数据源或目标时,除了可以使用字符串作为文件以及位置的指定以外,我们也可以使用File类指定。

    import java.io.*;
    
    public class FileInIODemo {
          
          
        public static void main(String[] args) {
          
          
            BufferedReader br=null;
            BufferedWriter bw=null;
            try {
          
          
                //我们之前都是用"路径"字符串放在了FileReader当中,去指定位置,现在我们通过File对象来表达了
                br=new BufferedReader(new FileReader(new File("d:/sxt.txt")));
                bw=new BufferedWriter(new FileWriter(new File("d:/sxt8.txt")));
                String temp="";
                int i=1;
                while ((temp=br.readLine())!=null){
          
          
                    bw.write(i+","+temp);
                    bw.newLine();
                    i++;
                }
            }catch (Exception e){
          
          
                e.printStackTrace();
            }finally {
          
          
                try {
          
          
                    if (br!=null){
          
          
                        br.close();
                    }
                    if (bw!=null){
          
          
                        bw.close();
                    }
                }catch (Exception e){
          
          
                    e.printStackTrace();
                }
            }
        }
    }
    

猜你喜欢

转载自blog.csdn.net/Xun_independent/article/details/114897599
今日推荐