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();
        }
    }
  • 相关阅读:
    [SCM]源码管理 perforce的权限管理
    [BuildRelease]产品和文件版本号
    删除所有的.svn 文件
    [SCM]源码管理 perforce快速入门
    6个Linux chkconfig命令实例 增加,删除,查看和修改services的自动启动选项
    [SCM]源码管理 perforce管理员需要知道的命令
    [SCM]源码管理 perforce与分布式团队的开发
    [SCM]源码管理 perforce命令行高级
    PHP aes加密 mcrypt转openssl问题;
    《Excel与VBA程序设计》第四章更新
  • 原文地址:https://www.cnblogs.com/jasonlixuetao/p/5554311.html
Copyright © 2011-2022 走看看