Java RandomAccessFile基本的用法

mac2022-06-30  81

一、认识RandomAccessFile类

      RandomAccessFile是Java提供的对文件内容的访问,既能够读取文件,也能够写文件;

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

(1)打开文件,有两种打开模式-----“rw”(读写)、“r”(只读)

       RandomAccessFile raf=new RandomAccessFile(file,“rw”);

RandomAccessFile能够随机读取文件的内容是因为存在一个指针,记录读取或者写入的位置,打开文件是pointer=0;

(2)写方法

  写方法一次只能写入一个字节,写入后指针指向下一个位置

    raf.write(int);//斜土的是int的后8位

(3)读方法

同样的读方法也是一次读取一个字节

int b=raf.read();

(4)文件读写完成后要关闭

raf.close();

简单操作

package com.neuedu.demo01;

import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Arrays;

public class RandomAccessFiledemo {    public static void main(String[] args)throws IOException {     File demo=new File("demo");     if (!demo.exists()) {         demo.mkdir();     }     File file=new File(demo,"raf.bat");     if (!file.exists()) {         file.createNewFile();     }     RandomAccessFile raf=new RandomAccessFile(file, "rw");          System.out.println("向文件中写入");     raf.write('A');   //写入一个字符,只会写入第八位     raf.write('B');     int i=112324;     //用write方法每次只能写一个字节,如果要把i写进去需要写4次     raf.write(i>>>24);     raf.write(i>>>16);     raf.write(i>>>8);     raf.write(i);     raf.writeInt(i);                         //也可以直接写入一个整数,占4个字节,底层实现就是上面的方法     raf.writeUTF("这是一个UTF字符串");         // 这个长度写在当前文件指针的前两个字节处,可用readShort()读取       raf.writeDouble(8.236598);               // 占8个字节       raf.writeBoolean(true);                  // 占1个字节       raf.writeShort(395);                     // 占2个字节       raf.writeLong(2325451l);                 // 占8个字节       raf.writeFloat(35.5f);                   // 占4个字节       raf.writeChar('a');                      // 占2个字节       String string="中";     byte [] by=string.getBytes();     raf.write(by);     System.out.println(raf.getFilePointer());                    //读取文件,把指针移到读取的位置---利用的是seek()     raf.seek(0);                                                 ///将指针移到文件的开头     //一次性读取,就是把文件中的内容都读取到字节数组中     byte [] buffer=new byte[(int)raf.length()];     raf.read(buffer);         //将文件一次性读取到字节数组中     System.out.println("输出文件全部内容:");     System.out.println(Arrays.toString(buffer));     for (byte b : buffer) {         System.out.print(Integer.toHexString(b &0xff)+" ");      //以十六进制输出     }     System.out.println();     raf.seek(2);                                                //将指针移到第三个字节位置     int readInt = raf.readInt();                                //读取一个整数     System.out.println(readInt);     raf.skipBytes(4);                                           //跳过一个int     System.out.println(raf.readUTF());                          //输出UTF语句              }

}

转载于:https://www.cnblogs.com/Actexpler-S/p/7581924.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)