zoukankan      html  css  js  c++  java
  • RandomAccessFile类初次使用

    
    

    RandomAccessFile :

    
    

    java提供的对文件内容的访问 既可以读文件 也可以写文件 

    
    

    支持随机访问文件 可以访问文件的任意位置

    
    

    (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官方说明)

    
    
    
    
    

    raf.getFilePointer()获取当前指针位置

    
    

    raf.length()获取文件长度

    
    

    raf.seek()把指针指定到某一位置




    1
    import java.io.File; 2 import java.io.IOException; 3 import java.io.RandomAccessFile; 4 import java.util.Arrays; 5 6 7 8 9 public class RafDemo { 10 11 /** 12 * @param args 13 */ 14 public static void main(String[] args) throws IOException{ 15 File demo=new File("demo"); 16 if(!demo.exists()) 17 demo.mkdir(); 18 File file=new File(demo,"raf.dat"); 19 if(!file.exists()) 20 { 21 file.createNewFile(); 22 } 23 24 RandomAccessFile raf=new RandomAccessFile(file, "rw"); 25 //指针的位置 26 System.out.println(raf.getFilePointer()); 27 28 raf.write('A');//只写了一个字节 29 System.out.println(raf.getFilePointer()); 30 raf.write('B'); 31 32 int i=0x7fffffff; 33 //用write每次只能写一个字节,要写4次 34 //0xff=00000000 00000000 00000000 11111111 35 //和 byte(8bit)与上后其实是给int(4byte)的前24位补0,取得是后8位。 36 raf.write(i>>>24);//高8位 37 raf.write(i>>>16); 38 raf.write(i>>>8); 39 raf.write(i); 40 System.out.println(raf.getFilePointer()); 41 42 //可以直接写入一个int 43 raf.writeInt(i); 44 System.out.println(raf.getFilePointer()); 45 46 String s="中"; 47 byte[] gbk=s.getBytes("gbk"); 48 raf.write(gbk); 49 System.out.println(raf.getFilePointer()); 50 51 //读文件,把指针移动头部 52 raf.seek(0); 53 //一次性读取,把文件中的内容都读到字节数组中 54 byte[] buf=new byte[(int) raf.length()]; 55 raf.read(buf); 56 System.out.println(Arrays.toString(buf)); 57 58 String s1=new String(buf,"gbk"); 59 // System.out.println(s1); 60 for (byte b : buf) { 61 System.out.print(Integer.toHexString(b& 0xff)+" "); 62 } 63 raf.close(); 64 } 65 66 }
  • 相关阅读:
    前端优化分析 之 javascript放在底部
    HTML、SHTML、XHTML、DHTML、XML有什么不同
    web项目开发流程及规范
    sql developer连接mysql数据库
    hibernate自动创建表报错,提示不存在
    04关键字和标识符
    03注释与API文档
    WEB应用中的路径问题及乱码问题
    01java开发环境配置
    Eclipse Java EE IDE for Web Developers 4.5.1 安装hibername tools 插件
  • 原文地址:https://www.cnblogs.com/rongweijun/p/5440912.html
Copyright © 2011-2022 走看看