zoukankan      html  css  js  c++  java
  • java_randomAccessFile类的使用

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

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

    package randomAccessFIle;
    
    import java.io.File;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.util.Arrays;
    
    public class randomAccessFile{
    
        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整个写进去要write四次
             raf.write(i>>>24);
             raf.write(i>>>16);
             raf.write(i>>>8);
             raf.write(i);
             System.out.println(raf.getFilePointer());
             
             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));
             for(byte b:buf){
                 System.out.println(Integer.toHexString(b&0xff)+" ");
             }
             raf.close();
        }
    }
  • 相关阅读:
    Excel VBA 根据下拉框单元格的值来改变另一个下拉框单元格的值
    HTML Encode 和Decode
    端口号8080和8181被占用的解决方法!
    Eclipse中全局搜索和更替
    HTTP协议详解
    SQL server 常用语句
    50道 Sql语句题
    JAVA过滤器与SpringMVC拦截器之间的区别
    javaWeb中 servlet 、request 、response
    Java 中的 request 和response 区别
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/5554311.html
Copyright © 2011-2022 走看看