博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java: RandomAccessFile
阅读量:5103 次
发布时间:2019-06-13

本文共 1904 字,大约阅读时间需要 6 分钟。

  RandeomAccessFile虽然是java.io中的成员,但该类只继承了Object类,实现了DataOut, DataIn, Closeable等接口.此类的实例支持对文件的随机访问和读取.随机访问文件的行为类似存储在文件系统中的一个大型byte数组.存在指向该隐含数组的光标或者索引,称为文件指针. 输入操作从文件指针开始读取字节,并随着对字节的读取而前移文件指针.如果随机访问文件以读取/写入的模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而迁移此文件指针.写入隐含数组的当前末尾之后的输出操作导致该数组扩展.该文件指针可以通过getFilePointer方法读取,并通过seek方法设置.

  通过该类的构造函数可以看出,该类只能操作文件,而且操作文件还有模式.    r  rw rwd rws

  如果模式为只读r,不会创建文件,会去读取一个以存在的文件,如果该文件不存在则会出现异常;

  如果模式为rw,该对象的构造函数要操作的文件不存在,则自动创建,如果存在,则不会覆盖.

  seek方法可以设置文件指针的位置;

  skipBytes方法可以跳过指定字节的位置,但该方法只能往前跳,不能往后跳.所以使用没有seek方便.

1 package Day20; 2 import java.io.*; 3  4 public class RandomAccessFileDemo { 5  6     public static void main(String[] args)throws IOException { 7         //writeFile(); 8         readFile(); 9 10     }11     12     public static void writeFile()throws IOException{13         //File file = new File("a.bat");14         RandomAccessFile raf = new RandomAccessFile("a.txt","rw");15         16         raf.write("张三".getBytes());17         raf.writeInt(97);18         raf.write("李四".getBytes());19         raf.writeInt(98);20         raf.write("王五".getBytes());21         raf.writeInt(99);22         23         raf.close();24     }25     26     public static void readFile()throws IOException{27         RandomAccessFile raf = new RandomAccessFile("a.txt","r");28         for(int x=0;x<3;x++)29         {30             raf.seek(x*8);31             byte[] buf = new byte[4];32             raf.read(buf);33             String name = new String(buf);34             int age = raf.readInt();35             System.out.println(name+":"+age);36         }37 //        byte[] buf = new byte[4];38 //        raf.read(buf);39 //        40 //        String name = new String(buf);//取前四个字节"张三"41 //        int age = raf.readInt();//取"张三"后面的9742 //        System.out.println(name+":"+age);43         raf.close();44     }45 46 }

 

转载于:https://www.cnblogs.com/siyingcheng/p/4445773.html

你可能感兴趣的文章
Python(2.7.6) 迭代器
查看>>
Spring IOP 面向切面编程
查看>>
FreeBSD11配置local_unbound做dns缓存和转发
查看>>
JS面向对象
查看>>
责任链模式
查看>>
IE和火狐CSS透明层兼容写法
查看>>
名称空间与作用域
查看>>
序列化和反序列化
查看>>
serverlet生命周期
查看>>
【codevs5037】线段树练习4加强版
查看>>
Raid
查看>>
Undefined symbols for architecture i386的错误
查看>>
https加密实现
查看>>
设计一个简易的有道词典
查看>>
C++学习008-delete与delete[]的差别
查看>>
OSG-基本几何图形
查看>>
自动称重系统-1
查看>>
js随笔集
查看>>
谷歌浏览器整个网页截图方法
查看>>
小菜面试 String 篇 之 统计一个字符串中数字,字母,的个数
查看>>