中华考试网·阅读新闻
编程开发 > JAVA > 文章内容

JAVA编程课堂笔记(64)

2016-1-4编辑:ljnbset

 RandomAccessFile 操作文件内容, 访问文件任意位置

 16进制:41 对应: 0100 0001 是一个字节(byte)

 一个MP3歌曲大约 5M byte, 一个5M个Byte数据组成的有序集合

 一个文件8G个Byte

  文件是byte by byte 是数据有序集合

  基本的文件访问, 基于一个byte一个byte的读写文件

  byte数据是文件的基本组成单位, 是最小的原子单位.

 1)Java 文件模型, 文件是byte by byte 是数据集合

 data   :  41 42 00 00 00 ff d6 d0  ...

 index  :   0  1  2  3  4  5  6  7  8

 pointer:   ^

 2) 打开文件, 有两种模式 "rw", "r"

  RandomAccessFile raf = new RandomAccessFile(file, "rw");

  打开文件时候默认文件指针在开头 pointer=0

 3)写入方法: raf.write(int) 将整数的"低八位"写入到文件中, 指针

  自动移动到下一个位置, 准备再次写入

  * 文件名的扩展名要明确指定, 没有默认扩展名现象!

  任务: A 在demo文件夹中创建raf.dat

       B 打开这个文件

       C 写入 'A' 和 'B'

       D 写入整数 255 占用4个byte

       E 写入GBK 编码的 '中', d6d0

    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()); //0

    raf.write('A');// 0041 -> 00000041 -> 41

    System.out.println(raf.getFilePointer());//1

    raf.write('B');

    int i = 0x7fffffff;// 7f ff ff ff

    //raf.write(i>>>24);// i>>>24 00 00 00 7f

    //raf.write(i>>>16);// i>>>16 00 00 7f ff

    //raf.write(i>>>8);//  i>>>8  00 7f ff ff

    //raf.write(i);//          i  7f ff ff ff

    raf.writeInt(i);

    String s = "中";//4e2d

    byte[] gbk = s.getBytes("gbk");

    //gbk = {d6, d0}

    raf.write(gbk);

    raf.close();

JAVA编程课堂笔记(63)
咨询热线:4000-525-585(免长途费)