java(5)--IO之RandomAccessFile

RandomAccessFile:
特点:
1,内部类封装了字节流。(输入和输出)所以可以文件进行读写操作。
2,内部有可变长度的字节数组缓冲区。
3,有一个指针在对字节数组缓冲区进行操作。
可以通过getFilePointer()获取该指针位置,也可以通过seek设置指针的位置。
该对象通过对指针的操作,可以完成从数据任意进行读写。
4,该对象只能操作文件。
5,可以完成对文件数据的随机访问,但要注意,文件的数据最好是有规律的,有固定长度间隔的。

class RandomAccessFileDemo 
{
public static void main(String[] args) throws IOException
{
//readFile();
writeFile_2();
}

public static void writeFile_2()throws IOException
{
RandomAccessFile raf = new RandomAccessFile("info.txt","rw");

raf.seek(8*5);
raf.write("张撒".getBytes());
raf.writeInt(97);

raf.close();
}

//使用该对象对文件进行读取。
public static void readFile()throws IOException
{
RandomAccessFile raf = new RandomAccessFile("info.txt","r");

raf.seek(8*1);//可以随时改变指针位置。
//raf.skipBytes(8*3);//只能往前跳,不能回头。

byte[] buf = new byte[4];
raf.read(buf);
String name = new String(buf);
System.out.println("name="+name);

int age = raf.readInt();

System.out.println("age="+age);

System.out.println("index="+raf.getFilePointer());

raf.close();
}

//使用该对象将一些写入到文件中。
public static void writeFile()throws IOException
{
RandomAccessFile raf = new RandomAccessFile("info.txt","rw");

raf.write("张三".getBytes());
raf.writeInt(97);
raf.write("李四".getBytes());
raf.writeInt(99);
raf.close();
}
}

RandomAccessFile主要应用于多线程,一个大文件可以分开下载,分别用几个线程同时开始下载,指针指定下载位置,即便某一个线程下载失败,可以重新下载该片段,不用全部下载。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值