zoukankan      html  css  js  c++  java
  • Java基础(二十八)Java IO(5)RandomAccessFile类与过滤器流(Filter Stream)

      一、RandomAccessFile类

      使用RandomAccessFile类可以读取任意位置数据的文件。

      1.构造方法

    • RandomAccessFile(String name, String mode)
    • RandomAccessFile(File file, String mode)

      其中“mode”表示:r(只读)、rw(可读写)、rws(同步写入)、rwd(更新同步写入)

      2.常用方法

      

      3.示例代码

    package jun.iplab.RandomAccessFile;
    
    import java.io.*;
    
    public class RandomAccessFileTest {
    
        public static void main(String[] args) {
            int[] bytes = {1,2,3,4,5};
            try {
                RandomAccessFile raf = new RandomAccessFile("D:\JavaIOTest\RandomAccessFileTest.txt", "rw");
                // 按照顺序将数据写入文件中
                for (int i = 0; i < bytes.length; i++) {
                    raf.writeInt(bytes[i]);
                }
                // 按照倒序读出数据
                for (int i = bytes.length - 1; i >= 0; i--) {
                    // 由于int型数据占4个字节,因此文件指针位置需要乘以4
                    raf.seek(i*4);
                    // 从文件中读出数据并输出到控制台
                    System.out.println(raf.readInt());
                }
                raf.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
    输出:
    5
    4
    3
    2
    1

      二、读写二进制数据

      过滤器流是为某种目的过滤字节或字符的数据流。

      基本的输入流提供的读取方法,只能用来读取字节或字符。而过滤器流能够读取整数值、双精度值或字符串,但需要一个过滤器类来包装输入流。

      DataInputStream和DataOutputStream类分别是FilterInputStream和FileOutputStream类的子类。它们分别实现了DataInput和DataOutput接口,该接口中定义了独立于具体机器的带有格式的读写操作,从而可以实现对Java中的不同基本类型的读写。

      DataOutput接口定义了用于以二进制形式写数组、字符、Boolean值和字符串的各种方法。

      DataInput接口定义了读取二进制形式数据的各种方法。

      例如:

      为了从文件中读入二进制数据,可以将DataInputStream与某个字节源相结合,例如FileInputStream:

    DataInputStream dis = new DataInputStream(new FIleInputStream("employee.dat"));

      与此类似,要想写出二进制数据,可以使用DataOutputStream类:

    DataOutputStream dos = new DataOutputStream(new FIleOutputStream("employee.dat"));
  • 相关阅读:
    java身份证号码校验、邮箱校验、手机号码/电话号码校验
    垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回
    redis缓存机制和底层实现
    java自然语言StanfordCoreNLP入门
    java生成汉字集
    maven打包 invalid entry size Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.5.14.RELEASE:repackage (default) on project
    maven解决大项目打包慢的问题
    visualVM远程监控jetty
    jetty配置远程debug
    图数据库ubentu环境neo4j安装
  • 原文地址:https://www.cnblogs.com/BigJunOba/p/9412959.html
Copyright © 2011-2022 走看看