概述:
此類的例項支援對隨機訪問檔案的讀取和寫入,RandomAccessFile類預設使用的編碼是ISO-8859-1,所以在使用這個類的讀寫的時候,一定要注意編碼格式。
特點:
1.RandomAccessFile類不屬於流,是Object類的子類
2.包含了InputStream和OutputStream的功能
3.能支援讀寫基本型別
4.支援對隨機訪問檔案的讀取和寫入
構造方法:
RandomAccessFile(String name,String mode)
RandomAccessFile raf=new RandomAccessFile("E:\\File\\2.txt", "r");
mode引數的對照表:
1.讀取
使用RandomAccessFile類的readLine()讀取檔案的時候,會亂碼,所以應該轉換為支援的編碼
RandomAccessFile raf=new RandomAccessFile("E:\\File\\2.txt", "r");
System.out.println(new String(raf.readLine().getBytes("ISO-8859-1"),"GBK"));
2.寫入
RandomAccessFile raf=new RandomAccessFile("E:\\File\\5.txt", "rw");
raf.writeBytes("大家好,才是真的好!\n");//使用提供的編碼寫入
raf.write("大家好,才是真的好!".getBytes());//轉換為位元組陣列然後寫入
結果圖:
可見,使用自帶的編碼寫入,會出現亂碼,如果轉換為位元組陣列寫入,不會出現亂碼。
3.寫入改進:
RandomAccessFile raf=new RandomAccessFile("E:\\File\\5.txt", "rw");
//轉換成RandomAccessFile類對應的的編碼
String s=new String("大家好,才是真的好!\n".getBytes(),"ISO-8859-1");
raf.writeBytes(s);
raf.write("大家好,才是真的好!".getBytes());
結果圖:
注意:RandomAccessFile 讀寫檔案時,不管檔案中儲存的資料編碼格式是什麼 使用 RandomAccessFile物件方法的 readLine() 都會將編碼格式轉換成 ISO-8859-1 所以 輸出顯示是還要在進行一次轉碼。在使用的過程中,一定要注意編碼格式。
本作品採用《CC 協議》,轉載必須註明作者和本文連結