首页 > 代码库 > java 21 - 12 随机访问流(不属于IO流)
java 21 - 12 随机访问流(不属于IO流)
随机访问流:
RandomAccessFile类不属于流,是Object类的子类。
但它融合了InputStream和OutputStream的功能。
支持对文件的随机访问读取和写入。
public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模
mode:参数指定用以打开文件的访问模式。允许的值及其含意为:
值 | 含意 |
---|---|
"r" | 以只读方式打开。调用结果对象的任何 write 方法都将导致抛出 IOException 。 |
"rw" | 打开以便读取和写入。如果该文件尚不存在,则尝试创建该文件。 |
"rws" | 打开以便读取和写入,对于 "rw",还要求对文件的内容或元数据的每个更新都同步写入到底层存储设备。 |
"rwd" | 打开以便读取和写入,对于 "rw",还要求对文件内容的每个更新都同步写入到底层存储设备。 |
模式有四种,我们最常用的一种叫"rw",这种方式表示既可以写数据,也可以读取数据
首先,我们创建一个随机访问流,并写入数据
1 private static void write() throws IOException { 2 // 创建随机访问流对象 3 RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw"); 4 5 // 可以写入任何类型数据 6 raf.writeInt(100); 7 raf.writeChar(‘a‘); 8 raf.writeUTF("中国"); 9 10 raf.close();11 }
再试下随机访问流的读取:
1 private static void read() throws IOException { 2 // 创建随机访问流对象 3 RandomAccessFile raf = new RandomAccessFile("raf.txt", "rw");//不管读写,这个代码都一样 4 5 int i = raf.readInt(); 6 System.out.println(i); 7 // 该文件指针可以通过 getFilePointer方法读取,并通过 seek 方法设置。 8 System.out.println("当前文件的指针位置是:" + raf.getFilePointer());//4 9 10 char ch = raf.readChar();11 System.out.println(ch);12 System.out.println("当前文件的指针位置是:" + raf.getFilePointer());//613 14 String s = raf.readUTF();15 System.out.println(s);16 System.out.println("当前文件的指针位置是:" + raf.getFilePointer());//16,在6+3+3后,还读取了2个字节+2 = 1617 18 // 如果只要读取a:19 raf.seek(4);20 ch = raf.readChar();//要清楚要读取的位置的数据是什么类型的,这里要对应类型的,否则会发现,输出的东西看不懂21 System.out.println(ch);22 }
java 21 - 12 随机访问流(不属于IO流)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。