package day06;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.lang.ProcessBuilder.Redirect;
/*
* RAF提供了方便读写基本类型数据的方法
*/
public class RandomAccessFileDemo3 {
public static void main(String[] args) throws IOException {
RandomAccessFile raf = new RandomAccessFile("raf1.dat", "rw");
/*
* long getFilrPointer()
* 获取当前RAF的指针位置
*/
System.out.println("指针位置:"+raf.getFilePointer());
//向文件中写入一个int的最大值
/* vvvvvvvv
* 01111111 11111111 11111111 11111111
* 普通的write方法只写入int的低八位
* 因此为写入max,需要进行移位操作,逐次写入。
*/
int max = Integer.MAX_VALUE;
raf.write(max>>>24); //向右移动24位,依次类推
raf.write(max>>>16);
raf.write(max>>>8);
raf.write(max);
/*
* java自带此种移位方法写入
*/
raf.writeInt(max);
System.out.println("指针位置:"+raf.getFilePointer());
raf.writeDouble(123.123);
raf.writeLong(12345L);
System.out.println("指针位置:"+raf.getFilePointer());
/*
* void seek(long pos)
* 移动指针到指定位置
*/
raf.seek(0);
/*
* 此时如果还想读取刚才写入的数据
* int i = raf.readInt();
* System.out.println(i);
* 使用readInt方法会报错,EOF异常
* EOF:end of file
* 因此必须进行移动指针操作
*/
int i = raf.readInt();
System.out.println(i);
raf.seek(8);
double d = raf.readDouble();
System.out.println(d);
long l = raf.readLong();
System.out.println(l);
System.out.println("写入完毕!");
raf.close();
}
}
Java SE利用RandomAccessFile读写基本类型数据
最新推荐文章于 2024-06-09 17:42:15 发布