您的位置:首页 > 职场人生

黑马程序员-学习日志-RandomAccessFile

2014-01-14 13:13 417 查看
---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------

RandomAccessFile该类不算是IO体系中的子类。而直接继承自Object。但是它是IO包中成员,因为它具备读与写的功能。内部封装了一个数组,而且通过指针对数组的元素进行操作。可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的位置。

其实完成读写的原理就是内部封装了字节输入流和输出流。

通过构造函数可以看出,该类只能操作文件!

而且操作文件还有模式~~~:只读r,读写rw等。

如果模式为只读r,不会创建文件,会去读取一个已存在的文件,如果该文件不存在,则会出现异常。如果模式为rw,则会自动创建。而且该对象的构造函数要操作的文件不存在,会自动创建。如果存在会覆盖。

import java.io.*;

class RandomAccessFileDemo
{
public static void main(String[] args) throws IOException
{
//writeFile();
//readFile();
writeFile_2();
}
public static void readFile() throws IOException
{
RandomAccessFile raf = new RandomAccessFile("ran.txt","r");
//raf.write("haha".getBytes());

//调整对象中指针
//raf.seek(8);//可以往前走

//跳过指定的字节数
raf.skipBytes(8);//只能往后跳
byte[] buf = new byte[4];
raf.read(buf);
String name = new String(buf);

int age = raf.readInt();

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

raf.close();
}
//随机写
public static void writeFile_2() throws IOException
{
RandomAccessFile raf = new RandomAccessFile("ran.txt","rw");
raf.seek(8*3);
raf.write("周期".getBytes());
raf.writeInt(103);
raf.close();
}

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

raf.write("李四".getBytes());
raf.writeInt(97);
raf.write("王五".getBytes());
raf.writeInt(99);

raf.close();
}
}


---------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流!
----------------------详细请查看:http://edu.csdn.net
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: