1. 程式人生 > 實用技巧 >Java IO操作——簡單瞭解RandomAccessFile隨機讀寫檔案操作類的使用

Java IO操作——簡單瞭解RandomAccessFile隨機讀寫檔案操作類的使用

參考:https://blog.csdn.net/u013087513/article/details/51911577

RandomAccessFile類:

1.功能:完成隨機讀取功能,可以讀取指定位置的內容。

2.類的方法: 1)public RandomAccessFile(File file, String mode)throws FileNotFoundException 構造方法 接收File類的物件,指定操作路徑,但是在設定時需要設定模式:"r": 只讀、"w": 只寫、"rw": 讀寫。 2)public RandomAccessFile(String name, String mode) throws FileNotFoundException 構造方法 不再使用File類物件表示檔案,而是直接輸入了一個固定的檔案路徑。 3)public void close() throws IOException 關閉操作 4)public int read(byte[] b) throws IOException 將內容讀取到一個byte陣列之中 5)public final byte readByte() throws IOException 讀取一個位元組 6)public final int readInt() throws IOException從檔案中讀取整型資料。 7)public void seek(long pos)throws IOException 設定讀指標的位置。 8)public final void writeBytes(String s)throws IOException 將一個字串寫入到檔案之中,按位元組的方式處理。 9)public final void writeInt(int v)throws IOException 將一個int型資料寫入檔案,長度為4位。 10)public int skipBytes(int n)throws IOException 指標跳過多少個位元組。 3.例子 寫入:
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() ; // 關閉 } };
讀取:
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() ; // 關閉 } };

如果想操作檔案內容的話,可以使用RandomAccessFile完成 總結: 1、瞭解RandomAccessFile類的作用即可。 2、RandomAccessFile類操作起來比較麻煩,所以在IO中會提供專門的輸入輸出操作。