博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO流 序列三:RandomAccessFile类
阅读量:5874 次
发布时间:2019-06-19

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

hot3.png

 

3. RandomAccessFile

3.1 RandomAccessFile类简介

  •        1. Java提供的对文件内容的访问,既可以读文件,也可以写文件

  •        2. 可以随机访问文件,可以访问文件的任意位置

  •        3. 读写方式:rw(可读写) r(只读)

          例:RandomAccessFile raf = new RandomAccessFile(file,"rw")

  •        4. 由于是随机访问,该类提供了一个指针,默认打开文件的时候指正文件在开头 pointer = 0

  •        5. 写方法

            raf.write(int) -->只写一个字节(8),同时,指针指向下一个位置,准备再次写入

  •        6. 读方法

            int b = raf.read() -->读一个字节

  •        7. 文件读写完成一定要关闭

 

 

3.2 示例

public static void main(String[] args) throws Exception {

         // 创建目录

         File demo = new File("Demo");//未指定绝对路径,默认是本项目下

         if(!demo.exists()){

              demo.mkdir();

         }

         // 创建文件

         File file = new File(demo,"raf.dat");//demo目录下创建raf.dat文件

         if(!file.exists()){

              file.createNewFile();

         }

        

         RandomAccessFile raf = new RandomAccessFile(file, "rw");

         // 指针位置

         System.out.println("起始指针位置:" + raf.getFilePointer()); // 0

        

         // 写操作

         raf.write('A'); //只写了一个字节

         System.out.println("写入一次后的指针位置:" + raf.getFilePointer()); // 1

         raf.write('B');

         System.out.println("写入两次后的指针位置:" + raf.getFilePointer()); // 2

        

         // 最大整数

         int i = 0x7fffffff;

         // write方法每次只能写入一个字节,如果要把i写进去就得写4

         raf.writeInt(i >>> 24); //8

         raf.writeInt(i >>> 16); //8

         raf.writeInt(i >>> 8);

         raf.writeInt(i); //最后8

         System.out.println("指针位置:" + raf.getFilePointer());  // 18

        

         // 写入中文

         String s = "";

         byte[] bytes = s.getBytes("utf8");

         raf.write(bytes);

         System.out.println("指针位置:" + raf.getFilePointer());   // 21  

        

         // 文件长度

         System.out.println(raf.length());

        

         // 读文件. 必须把指针移到头部

         raf.seek(0);

        

         // 一次性读取,把文件中的内容全部读取到字节数组中

         byte[] buf = new byte[(int)raf.length()];

         raf.read(buf);

         System.out.println(Arrays.toString(buf));

        

         raf.close();

     }

 

转载于:https://my.oschina.net/AlbertHa/blog/342424

你可能感兴趣的文章
ubuntu 12.04 下面安装vmware workstation 8.0.4
查看>>
[原创]FineUI秘密花园(二十三) — 树控件概述
查看>>
【Java学习笔记】如何写一个简单的Web Service
查看>>
VS2010技巧:如何在js文件中使用jQuery智能感知
查看>>
Oracle常用脚本——通过RMAN配置RAC环境的分布式磁带机
查看>>
UML建模类型(转载)
查看>>
Xcode 文档注释
查看>>
转载——Java与WCF交互(二):WCF客户端调用Java Web Service
查看>>
Html5 学习系列(五)Canvas绘图API快速入门(1)
查看>>
JQuery html API支持解析执行Javascript脚本功能实现-代码分析
查看>>
Web Service测试工具小汇
查看>>
如何解决This system is not registered with RHN.
查看>>
Cocos2d-x学习笔记(两)Cocos2d-x总体框架
查看>>
拆解探索MagSafe电源接口结构和指示灯变颜色原理
查看>>
Android中EditText,Button等控件的设置
查看>>
lintcode:Remove Nth Node From End of Lis 删除链表中倒数第n个节点
查看>>
POJ 1915-Knight Moves (单向BFS && 双向BFS 比)
查看>>
Myeclipse8.5 反编译插件 jad 安装
查看>>
java中在linux下利用jstack检测死锁
查看>>
linux编译安装LAMP
查看>>