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 }
  • 相关阅读:
    Smobiler如何实现.net一键开发,ios和android跨平台运行
    使用Smobiler实现类似美团的界面
    疫情当下,企业系统如何快速实现移动化?
    Smobiler针对百度文字识别SDK动态编译与运行
    smobiler自适应不同手机分辨率
    仓库管理移动应用解决方案——C#开发的移动应用开源解决方案
    移动OA办公——Smobiler第一个开源应用解决方案,快来get吧
    react-native 标题随页面滚动显示和隐藏
    react-native 键盘遮挡输入框
    解决adb网络连接中出现的“由于目标计算机积极拒绝,无法连接”错误
  • 原文地址:https://www.cnblogs.com/rongweijun/p/5440912.html
Copyright © 2011-2022 走看看