java关于RandomAccessFile类的使用

来源:互联网 发布:万网域名管理中心 编辑:程序博客网 时间:2024/06/05 19:58
* RandomAccessFile是IO包的类,但是其自成一派,从Object直接继承而来。 只可以对文件进行操作,可以对文件进行读取和写入。
* 当模式为r是,当文件不存在时会报异常,当模式为rw时,当文件不存在时,会自己动创建文件,当文件已经存在时 不会对原有文件进行覆盖。

* RandomAccessFile有强大的文件读写功能,其内部是大型 byte[],可以通过seek(),getFilePointer()等方法操作的指针,方便对数据进行写入与读取。还可以对基本数据类型进行直接的读和写操作。

 * 用途举例:多线程下载设计

import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class RandomAccessFileTest {/** * RandomAccessFile是IO包的类,但是其自成一派,从基数中继承而来。 只可以对文件进行操作,可以对文件进行读取和写入。 * 当模式为r是,当文件不存在时会报异常,当模式为rw时,当文件不存在时,会自己动创建文件,当文件已经存在时 不会对原有文件进行覆盖。 * RandomAccessFile有强大的文件读写功能,其内部是大型 * byte数组,可以通过seek(),getFilePointer()等方法操作的指针,方便 * 对数据进行写入与读取。还可以对基本数据类型进行直接的读和写操作。 */public static void main(String[] args) {writeTest();readTest();}private static void readTest() {RandomAccessFile raf = null;try {//创建一个随机访问对象,且文件的访问模式为只读。//注意,一旦模式为只读,就不对其进行写入操作。raf = new RandomAccessFile("D:\\raf.txt", "r");//文件只读模式,写入操作将抛异常//raf.write("datou".getBytes());//可直接操作指针,灵活的访问内容raf.seek(12);byte b[] = new byte[4];raf.read(b);System.out.println(new String(b));} catch (IOException e) {e.printStackTrace();} finally {try {if (raf != null)raf.close();} catch (IOException e) {e.printStackTrace();}}}private static void writeTest() {RandomAccessFile raf = null;try {//创建一个可读写的对象raf = new RandomAccessFile("D:\\raf.txt", "rw");//写入数据。 可直接操作指定基本数据类型的对象。raf.writeBytes("java hello");raf.writeInt(23);raf.writeBytes("where are you");raf.writeInt(22);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {try {if (raf != null)raf.close();} catch (IOException e) {e.printStackTrace();}}}}