zoukankan      html  css  js  c++  java
  • Java IO流-随机访问流

    2017-11-05 19:45:51

    • RandomAccessFile类(随机访问流)

    RandomAccessFile类:是Object的子类,此类的实例支持对随机访问文件的读取写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针可以通过 getFilePointer 方法读取,并通过 seek 方法设置。

    *构造方法

    mode:(一般只使用前两个参数)

    *常用方法

    public class Demo5 {
        public static void main(String[] args) throws IOException {
            read();
        }
    
        public static void write()throws IOException{
            RandomAccessFile raf = new RandomAccessFile("E:/test.txt", "rw");
    
            raf.writeInt(50);
            raf.writeChar('a');
            raf.writeUTF("世界");
    
            raf.close();
        }
    
        public static void read() throws IOException{
            RandomAccessFile raf = new RandomAccessFile("E:/test.txt", "rw");
    
            int i= raf.readInt();
            System.out.println(i);
            System.out.println("当前文件位置:"+raf.getFilePointer());
    
            char c = raf.readChar();
            System.out.println(c);
            System.out.println("当前文件位置:"+raf.getFilePointer());
    
            String s = raf.readUTF();
            System.out.println(s);
            System.out.println("当前文件位置:"+raf.getFilePointer());
    
            raf.close();
        }
    }
    

    代码的结果如下:

    50
    当前文件位置:4  //因为Java中int类型占4个字节
    a
    当前文件位置:6  //Java中采用的是Unicode编码,所以char类型占2个字节
    世界
    当前文件位置:14 
     /*
    从当前文件指针开始读取前两个字节,类似于使用 readUnsignedShort。此值给出已编码字符串中随后的字节数,而不是结果字符串的长度。随后的字节然后解释为 UTF-8 修改版格式的字节编码字符,并转换为字符。所以是6+2+3*2 
    */ 
    

    这里还可以使用seek来设置文件指针。

        public static void read() throws IOException{
            RandomAccessFile raf = new RandomAccessFile("E:/test.txt", "rw");
    
            raf.seek(4);
            char c = raf.readChar();
            System.out.println(c);
    
            raf.close();
        }
    
  • 相关阅读:
    db4o 7.4 for .net3.5试用手记
    ruby学习笔记(2)类的基本使用
    温故而知新:设计模式之适配器模式(Adapter)
    Silverlight:Dependency Property(依赖属性)学习笔记
    Silverlight中的帧
    关闭与恢复visual studio实时调试器
    温故而知新:设计模式之桥接模式(Bridge)
    温故而知新:设计模式之单件模式(Singleton)
    一段oracle中的“复杂”分组统计sql
    VisualTreeHelper
  • 原文地址:https://www.cnblogs.com/hyserendipity/p/7788518.html
Copyright © 2011-2022 走看看