`
strawberry2013
  • 浏览: 18106 次
文章分类
社区版块
存档分类
最新评论

黑马程序员_Java基础_RandomAccessFile类

阅读更多

-------android培训java培训、期待与您交流! ----------


RandomAccessFile

该类不是算是IO体系中子类,而是直接继承自Object,但是它是IO包中成员。因为它具备功能。
内部封装了一个数组,而且通过指针对数组的元素进行操作,可以通过getFilePointer获取指针位置,
同时可以通过seek设置当前指针的位置,skipBytes()跳过n个字节,不可以倒退,只能前进

构造函数
RandomAccessFile(File file, String mode) ,该文件由File参数指定,mode常见有r和rw
RandomAccessFile(String name, String mode)
如果模式为只读 r不会创建文件,去读取一个已存在文件,如果该文件不存在,则会出现异常。
如果模式rw。操作的文件不存在,会自动创建。如果存则不会覆盖。


常见函数
long getFilePointer() 返回此文件中的当前偏移量。
int read(byte[] b)
String readLine()
void seek(long pos) 设置到此文件开头测量到的文件指针偏移量,在该位置发生下一个读取或写入操作。(可前进可倒退)
int skipBytes(int n)尝试跳过输入的 n 个字节以丢弃跳过的字节。 (只能前进)
void write(byte[] b) 将 b.length 个字节从指定 byte 数组写入到此文件,并从当前文件指针开始。

void writeInt(int v)


/*
RandomAccessFile
Strawberry2013-5-5

*/
import java.io.*;

class RandomAccessFileDemo
{
	public static void main(String[] args) throws Exception
	{
		
		write();
		read();
		
	}
	public static void write() throws Exception
	{
		RandomAccessFile raf = new RandomAccessFile("aa.txt", "rw");
		 raf.write("as".getBytes());
		 raf.write(2122);//只存储一个字节,会丢失数据, 可以使用raf.writeInt(2222);
		 //raf.writeInt(2222);
		 raf.seek(8);//设置指针的位置,可以前进也可以倒退
		 raf.skipBytes(8);//尝试跳过输入的n个字节以丢弃跳过的字节,不可以倒退!
		 raf.write(97);
	}
	public static void read() throws Exception
	{
		RandomAccessFile raf = new RandomAccessFile("aa.txt", "rw");
		byte[] bt = new byte[2];
		int num = -1;
		while((num=raf.read(bt)) != -1)
		{
			System.out.println(new String(bt, 0, num));
		}
	}

}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics