RandomAccessFile java提供的对文件内容的访问,既可以读文件也可以写文件。
RandomAccessFile支持随机访问文件,可以访问文件的任意位置

(1)java文件模型:
    在硬盘上的文件是byte byte byte存储的,是数据的集合
(2)打开文件:
    有两种模式“rw"(读写) ”r"(只读)
    RandomAccessFile raf = new RandomAccessFile(file,"rw")
    文件指针,打开文件时指针在开头 pointer = 0;
(3)写方法
    raf.write(int) -->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入
(4)读方法
    int b = raf.read() --->读一个字节
(5) 文件读写完以后一定要关闭(Oracle官方说明)

package Blog;import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;public class RafDemo {public static void main(String[] args) throws IOException {File demo = new File("demo");if (!demo.exists()){demo.mkdir();}File file = new File(demo,"raf.dat");if (!file.exists()) {file.createNewFile();}RandomAccessFile raf = new RandomAccessFile(file, "rw");//指针的位置
        System.out.println(raf.getFilePointer());raf.write('A');//只写了一个字节
        System.out.println(raf.getFilePointer());raf.write('B');int i = 0x7fffffff;//用write方法每次只能写一个字节,如果要把i写进去就得写4次raf.write(i >>> 24);//高8位raf.write(i >>> 16);raf.write(i >>> 8);raf.write(i);System.out.println(raf.getFilePointer());//可以直接写一个int
        raf.writeInt(i);String s = "中";byte[] gbk = s.getBytes("gbk");raf.write(gbk);System.out.println(raf.length());//读文件,必须把指针移到头部raf.seek(0);//一次性读取,把文件中的内容都读到字节数组中byte[] buf = new byte[(int)raf.length()];raf.read(buf);System.out.println(Arrays.toString(buf));String s1 = new String(buf);System.out.println(s1);for (byte b : buf){System.out.println(Integer.toHexString(b & 0xff) + " ");}raf.close();}
}

转载于:https://www.cnblogs.com/deepSleeping/p/10111341.html

Java基础IO流(五)RandomAccessFile相关推荐

  1. # Java基础——IO流

    Java基础--IO流 File类的使用(熟悉构造器和方法的使用) File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹) File类的声明在java.io包下 文件和文件目录路径的抽象表示 ...

  2. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

  3. Java基础IO流(二)字节流小案例

    JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...

  4. Java基础IO流之字符流的使用

    ☆引言☆ 大家好,我是痛而不言笑而不语的浅伤.IO流分为字节流和字符流,而上一篇文章我们学习了字节流(Java基础IO流之字符流的使用),这篇文章带大家一起来学习字符流吧.对文章中描述错误的希望大家积 ...

  5. Java基础—IO流

    第一讲   IO概述 1. 流的概念 IO流即InputOutput的缩写,在Java中IO流用来处理设备之间的数据传输,Java对数据的操作是通过IO流的方式, 我们可以把IO流抽象的当作一根管道, ...

  6. 黑马程序员-JAVA基础-IO流之字符流和字符流缓冲区

    ------- android培训.java培训.期待与您交流!------- Java 的IO 流 是实现输入和输出的基础,Java 中把不同的输入.输出源抽象表述为"流" (S ...

  7. JAVA基础 IO流技术学习笔记

    目录 一.IO 流技术介绍 1.1  什么是IO? 1.2  流的概念 1.3  数据源 1.3.1 什么是数据源? 1.3.2数据源的分类 二.第一个简单的IO流程序 三.IO流经典写法(适用于任何 ...

  8. java基础 io流 字节流 字符流 节点流 包装流 转换流 缓冲流 对象流 打印流 Properties类

    目录 1.概念 2.常用的文件操作 2.1 创建文件 2.2 获取文件相关信息 2.3 目录的操作和文件删除 3. IO流原理及流的分类 3.1 流的分类 4.InputStream 字节输入流 4. ...

  9. Java基础——IO流

    IO流基础知识内容: 1.java.io包下 File类:java程序中的此类的一个对象,就对应着硬盘中的一个文件或网络中的一个资源. File file1 = new File("d:\\ ...

  10. Java基础—IO流(三)

    IO流(三) File类 一.概述 File类用于将文件或文件夹封装成对象,方便对文件和文件夹的属性信息进行操作.该类可以作为参数传递给IO流的构造函数,弥补流对象在操作文件和文件夹上的缺陷. 二.F ...

最新文章

  1. Script:列出数据库中子表上没有对应索引的外键
  2. 共享SQL语句减少硬解析
  3. React 简单实例 (React-router + webpack + Antd )
  4. C# —— 序列化与反序列化
  5. csv转json文件
  6. 【图像处理基础知识】-混合高斯背景建模
  7. git 代码回滚_git代码版本管理(1)——git版本回滚
  8. struts2 mysql配置文件路径_Struts2(四)Struts2配置文件的配置
  9. php form foreach,php – Drupal Form API – 使用foreach循环来构建表单
  10. 开心消消乐h5版游戏案例分享
  11. 面经 - JAVA知识点
  12. 映美Jolimark G102 打印机驱动
  13. 学习随笔——2.仿苹果官网效果,滚动缩放图片
  14. 智慧城市发力,区块链助力土木建设数据存储
  15. 杨永信和他荒唐至极的 “网瘾电击疗法”
  16. TX2 4.6.1 全部软件环境刷机要点
  17. matlab 读取ENVI中*.img格式图片代码
  18. SQL常用函数及使用案例
  19. VC++6.0显示代码行号【成功破解行数显示限制,完全免费!!!】
  20. Jacoco 入门使用

热门文章

  1. Linux中的一个命令行计算器bc简介
  2. 运营商市场定位决定移动互联网的成败
  3. Android Bundle类,通过bundle实现在两个activity之间的通讯
  4. 云服务器会获取系统信息吗,国内云服务器会被监控吗
  5. 孕妇可以使用计算机,【电脑对孕妇有影响吗】电脑对孕妇的危害,孕妇能玩电脑吗 - 妈妈网百科...
  6. c语言sin函数近似值,用泰勒公式求sin(x)的近似值
  7. MySQL单行函数分类
  8. MySQL 高级 - 启动及登录MySQL
  9. 接收超时死信的死信交换机
  10. 数组静态初始化【应用】