天天看點

java RandomAccessFile類

/*
RandonAccessFile類:
該類不是IO體系中的子類,
而是直接繼承自Object類。

但是它是IO包中的成員。因為它具備讀和寫的功能。
内部封裝了一個數組,而且通過指針對數組的元素進行操作。
可以通過getFilePoint擷取指針位置。
同時可以通過seek改變指針的位置。

其實完成讀寫的原理就是内部封裝了位元組輸入流和輸出流。

通過構造函數可以看出,該類隻能操作檔案。
而且操作檔案還有模式:隻讀r,讀寫rw等。
如果模式為隻讀r,不會建立檔案。回去讀取一個已存在的檔案,如果該檔案不存在,則會出現異常。
如果模式為rw,操作的檔案不存在,會自動建立。如果存在不會覆寫。
*/


import java.io.*;

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

	public static void read() throws IOException
	{
		RandomAccessFile raf=new RandomAccessFile("D:\\myfile\\mycode\\raf.txt","r");
		//raf.seek(8*1);//調整對象中指針
		raf.skipBytes(8);//跳過指定的位元組數。
		byte[] buf=new byte[4];
		raf.read(buf);//将内容讀取到buf中。
		String name=new String(buf);
		System.out.println("name:"+name);
		int age=raf.readInt();
		System.out.println("age:"+age);

		raf.seek(8*1);//調整對象中指針
		
	}

	public static void write()throws IOException
	{
		RandomAccessFile raf=new RandomAccessFile("D:\\myfile\\mycode\\raf.txt","rw");

		raf.write("張三".getBytes());
		raf.writeInt(97);

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

		raf.close();

	}
}