您的位置:首页 > 编程语言 > Java开发

java(5)--IO之RandomAccessFile

2015-12-01 16:06 661 查看
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主要应用于多线程,一个大文件可以分开下载,分别用几个线程同时开始下载,指针指定下载位置,即便某一个线程下载失败,可以重新下载该片段,不用全部下载。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: