其他分享
首页 > 其他分享> > 16.随机访问流

16.随机访问流

作者:互联网

1.RandomAccessFile有两个作用

  1. 可以实现对一个文件做读写的操作

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

2.RandomAccessFile的三个核心方法

3.基础操作

3-1:读写数据

import java.io.RandomAccessFile;

public class Dome19 {
   public static void main(String[] args) {
       RandomAccessFile raf = null;
       try {
           //创建随机访问流对象
           raf = new RandomAccessFile("d:/test.txt", "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);
           //打印输出
           for (int i = 0; i < arr.length-1; i++) {
               System.out.print(raf.readInt() + "\t");
          }
      } catch (Exception e) {
           e.printStackTrace();
      } finally {
           try {
               if (raf != null) {
                   raf.close();
              }
          } catch (Exception e) {
               e.printStackTrace();
          }
      }
  }
}

 

3-2:隔一个读一个

import java.io.RandomAccessFile;

public class Dome19 {
   public static void main(String[] args) {
       RandomAccessFile raf = null;
       try {
           //创建随机访问流对象
           raf = new RandomAccessFile("d:/test.txt", "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(0);
           //打印输出
           for (int i = 0; i < arr.length; 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();
          }
      }
  }
}

 

3-3:替换某个位置的数据

import java.io.RandomAccessFile;

public class Dome19 {
   public static void main(String[] args) {
       RandomAccessFile raf = null;
       try {
           //创建随机访问流对象
           raf = new RandomAccessFile("d:/test.txt", "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(0);
           //打印输出
           for (int i = 0; i < arr.length; i += 2) {
               raf.seek(i * 4);
               System.out.print(raf.readInt() + "\t");
          }
           System.out.println();
           //定位到要替换的位置
           raf.seek(8);
           //替换
           raf.writeInt(45);
           //打印输出
           for (int i = 0; i < arr.length; 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();
          }
      }
  }
}

 

 

标签:raf,arr,16,int,访问,length,随机,seek,RandomAccessFile
来源: https://www.cnblogs.com/lyq888/p/16145455.html