zoukankan      html  css  js  c++  java
  • JavaIO流(02)RandomAccessFile类详解

    RandomAccessFile类
    该类主要是对文件内容进行操作,可以随机的读取一个文件中指定位置的数据;
    但是如果想实现这样的功能,则每个数据的长度应该保持一致;
     
    构造方法:
     
    接受File类中的对象,但是在设置时需要设置模式,r:只读;w:只写;rw:读写(常用)
    public RandomAccessFile(File file, String mode)throws FileNotFoundException
    不再使用File类对象表示文件,而是直接输入了一个固定的文件路径
    public RandomAccessFile(String name,String mode)throws FileNotFoundException
     
    常用功能:
    关闭操作
    public void close()throws IOException
    将一个字符串写入到文件中,按字节的方式处理
    public final void writeBytes(String s)throws IOException
    将一个int型数据写入文件,长度为4位
    public final void writeInt(int v)throws IOException
    指针跳过多少个字节
    public int skipBytes(int n)throws IOException
    将内容读取到byte数组中
    public int read(byte[] b)throws IOException
    读取一个字节
    public final byte readByte()throws IOException
    从文件中读取整型数据
    public final int readInt()throws IOException
    设置读指针的位置
    public void seek(long pos)throws IOException
     
    package cn.itcast02;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.RandomAccessFile;
    import java.nio.ByteOrder;
    
    
    public class DemoRandowAccessFile01 {
         public static void main(String[] args) throws IOException {
              File file = new File("G:" + File.separator +"JavaTest"+File.separator + "test01.txt" );
    /*
              RandomAccessFile rdf = new RandomAccessFile(file, "rw");
              
              //写入文件内容
              String name = " liuyan  ";
               int age = 40;
    
              rdf.writeBytes(name);
              rdf.writeInt(age);
              
              String name2 = " xiaoming";
               int age2 = 30;
              
              rdf.writeBytes(name2);
              rdf.writeInt(age2);
              
              String name3 = " doudou  ";
               int age3 = 24;
              
              rdf.writeBytes(name3);
              rdf.writeInt(age3);
              rdf.close();
    */   
               //读取文件内容
              RandomAccessFile rdf = new RandomAccessFile(file, "r" );
              
               //创建空间存放姓名
              
               byte[] bytes = new byte[8];
              
              rdf.skipBytes(12);
              
               for (int i = 0; i < bytes.length; i++) {
                  bytes[i] = rdf.readByte();
              }
               //将byte转化为String
              String name = new String(bytes);
               int age = rdf.readInt();
              
              System. out.println("第二个人信息" +"姓名:" +name+"  " +"年龄:" +age);
              
               //指针返回到文件开头
              rdf.seek(0);
              rdf.close();       
         }
    }

    输出:

    第二个人信息姓名:xiaoming  年龄:30

      

  • 相关阅读:
    Springx b 界面
    ETCD 分布式锁实现逻辑
    etcd 集群概述 转
    [转]MySQL性能优化
    Elasticsearch、MongoDB和Hadoop比较
    Mysql导出表格变成科学计数法的解决方案
    记一次laravel框架下的post请求测试
    Mysql语句优化记录
    laravel与MongoDB 的部分实践
    Laravel多数据库连接记录
  • 原文地址:https://www.cnblogs.com/qlwang/p/5605435.html
Copyright © 2011-2022 走看看