RandomAccessFile

RandomAccessFile

java.io.RandomAccessFile
用来读写文件数据
RandomAccessFile是基于指针进行读写的,即,RandomAccessFile总是在指针指向的位置读写字节,并且读写后指针会自动向后移动。
RandomAccessFile既可以读取文件数据也可以向文件中写入数据。

读写文件数据

/*
* RandomAccessFile(String path,String mode)
 * RandomAccessFile(File file,String mode)
 * 第二个参数为模式:常用的有
 * r:只读模式
 * rw:读写模式
 */
RandomAccessFile raf = new RandomAccessFile("raf.dat","rw");
/*
 * void write(int d)
 * 写出给定的int值对应的2进制的低八位
 *                             vvvvvvvv
 * 00000000 000000000 00000000 00000001
 */
raf.write(1);
System.out.println("写出完毕!");
raf.close();

读取文件数据

RandomAccessFile raf = new RandomAccessFile("raf.dat","r");
/*
 * int read()
 * 读取一个字节,并以10进制的int型返回
 * 若返回值为-1,则表示读取到了文件末尾
 * 
 * 00000000 00000000 00000000 00000001
 * 
 */
int d = raf.read();
System.out.println(d);
raf.close();

RandomAccessFile提供了方便读写基本类型数据的方法

RandomAccessFile raf = new RandomAccessFile("raf1.dat","rw");
/*
 * long getFilePointer()
 * 获取当前RAF的指针位置
 */
System.out.println("pos:"+raf.getFilePointer());

/*
 * 向文件中写入一个int最大值
 *                            vvvvvvvv
 * 01111111 11111111 11111111 11111111
 */
int max = Integer.MAX_VALUE;
raf.write(max>>>24);//向右移动24位,依次类推
raf.write(max>>>16);
raf.write(max>>>8);
raf.write(max);

System.out.println("pos:"+raf.getFilePointer());

raf.writeInt(max);

System.out.println("pos:"+raf.getFilePointer());

raf.writeLong(1234L);

System.out.println("pos:"+raf.getFilePointer());

raf.writeDouble(123.123);

System.out.println("pos:"+raf.getFilePointer());
/*
 * void seek(long pos)
 * 移动指针到指定位置
 */
raf.seek(0);
System.out.println("pos:"+raf.getFilePointer());
//end of file
int i = raf.readInt();
System.out.println(i);

raf.seek(8);
long l = raf.readLong();
System.out.println(l);

System.out.println("pos:"+raf.getFilePointer());

double d = raf.readDouble();
System.out.println(d);
System.out.println("pos:"+raf.getFilePointer());

raf.seek(0);
l = raf.readLong();
System.out.println(l);

raf.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值