閱讀186 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java IO--RandomAccessFile類

RandomAccessFile類的主要功能是完成隨機讀取功能,可以讀取指定位置的內容。


因為在文件中,所有的內容都是按照字節存放的,都有固定的保存位置。



import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo01{
	// 所有的異常直接拋出,程序中不再進行處理
	public static void main(String args[]) throws Exception{
		File f = new File("d:" + File.separator + "test.txt") ;	// 指定要操作的文件
		RandomAccessFile rdf = null ;		// 聲明RandomAccessFile類的對象
		rdf = new RandomAccessFile(f,"rw") ;// 讀寫模式,如果文件不存在,會自動創建
		String name = null ;
		int age = 0 ;
		name = "zhangsan" ;			// 字符串長度為8
		age = 30 ;					// 數字的長度為4
		rdf.writeBytes(name) ;		// 將姓名寫入文件之中
		rdf.writeInt(age) ;			// 將年齡寫入文件之中
		name = "lisi    " ;			// 字符串長度為8
		age = 31 ;					// 數字的長度為4
		rdf.writeBytes(name) ;		// 將姓名寫入文件之中
		rdf.writeInt(age) ;			// 將年齡寫入文件之中
		name = "wangwu  " ;			// 字符串長度為8
		age = 32 ;					// 數字的長度為4
		rdf.writeBytes(name) ;		// 將姓名寫入文件之中
		rdf.writeInt(age) ;			// 將年齡寫入文件之中
		rdf.close() ;				// 關閉
	}
};

以上完成了寫入的操作,每條數據的長度都是12位。
寫完之後,開始讀取數據。寫的時候可以將一個字符串寫入。讀的時候需要一個個的以字節的形式讀取出來。
import java.io.File ;
import java.io.RandomAccessFile ;
public class RandomAccessFileDemo02{
	// 所有的異常直接拋出,程序中不再進行處理
	public static void main(String args[]) throws Exception{
		File f = new File("d:" + File.separator + "test.txt") ;	// 指定要操作的文件
		RandomAccessFile rdf = null ;		// 聲明RandomAccessFile類的對象
		rdf = new RandomAccessFile(f,"r") ;// 以隻讀的方式打開文件
		String name = null ;
		int age = 0 ;
		byte b[] = new byte[8] ;	// 開辟byte數組
		// 讀取第二個人的信息,意味著要空出第一個人的信息
		rdf.skipBytes(12) ;		// 跳過第一個人的信息
		for(int i=0;i<b.length;i++){
			b[i] = rdf.readByte() ;	// 讀取一個字節
		}
		name = new String(b) ;	// 將讀取出來的byte數組變為字符串
		age = rdf.readInt() ;	// 讀取數字
		System.out.println("第二個人的信息 --> 姓名:" + name + ";年齡:" + age) ;
		// 讀取第一個人的信息
		rdf.seek(0) ;	// 指針回到文件的開頭
		for(int i=0;i<b.length;i++){
			b[i] = rdf.readByte() ;	// 讀取一個字節
		}
		name = new String(b) ;	// 將讀取出來的byte數組變為字符串
		age = rdf.readInt() ;	// 讀取數字
		System.out.println("第一個人的信息 --> 姓名:" + name + ";年齡:" + age) ;
		rdf.skipBytes(12) ;	// 空出第二個人的信息
		for(int i=0;i<b.length;i++){
			b[i] = rdf.readByte() ;	// 讀取一個字節
		}
		name = new String(b) ;	// 將讀取出來的byte數組變為字符串
		age = rdf.readInt() ;	// 讀取數字
		System.out.println("第三個人的信息 --> 姓名:" + name + ";年齡:" + age) ;
		rdf.close() ;				// 關閉
	}
};


最後更新:2017-04-03 14:53:53

  上一篇:go Android應用自殺和幹掉其它進程
  下一篇:go GNU Radio 模塊