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