1. 程式人生 > >Java I/O---RandomAccessFile類(隨機訪問文件的讀取和寫入)

Java I/O---RandomAccessFile類(隨機訪問文件的讀取和寫入)

通過 bubuko system 姓名 println and row param 指向

1.JDK API中RandomAccessFile類的描述

技術分享圖片

此類的實例支持對隨機訪問文件的讀取和寫入。隨機訪問文件的行為類似存儲在文件系統中的一個大型 byte 數組。存在指向該隱含數組的光標或索引,稱為文件指針;輸入操作從文件指針開始讀取字節,並隨著對字節的讀取而前移此文件指針。如果隨機訪問文件以讀取/寫入模式創建,則輸出操作也可用;輸出操作從文件指針開始寫入字節,並隨著對字節的寫入而前移此文件指針。寫入隱含數組的當前末尾之後的輸出操作導致該數組擴展。該文件指針(實現數組隨機讀寫)可以通過 getFilePointer 方法讀取,並通過 seek 方法設置。

通常,如果此類中的所有讀取例程在讀取所需數量的字節之前已到達文件末尾,則拋出 EOFException(是一種 IOException)。如果由於某些原因無法讀取任何字節,而不是在讀取所需數量的字節之前已到達文件末尾,則拋出 IOException,而不是 EOFException。需要特別指出的是,如果流已被關閉,則可能拋出 IOException。

技術分享圖片

技術分享圖片

技術分享圖片

2.RandomAccessFile演示

  1 public class RandomAccessFileDemo {
  2 
  3 	/**
  4 	 * @代碼來自傳智播客
  5 	 * @param args
  6 	 * @throws IOException
  7 	 */
  8 	public static void main(String[] args) throws IOException {
  9 
 10 
 11 		/*
 12 		 * RandomAccessFile:
 13 		 * 特點:
 14 		 * 1,只能操作文件。
 15 		 * 2,既能讀,又能寫。
 16 		 * 3,維護了一個byte數組。內部定義了字節流的讀取和寫入。
 17 		 * 4,通過對指針的操作可以實現對文件的任意位置的讀取和寫入。
 18 		 */
 19 
 20 
 21 //		writeFile();
 22 		readFile();
 23 	}
 24 
 25 	public static void readFile() throws IOException {
 26 
 27 		RandomAccessFile raf = new RandomAccessFile("tempfile\\random.txt", "r");
 28 
 29 		//隨機讀取,只要通過設置指針的位置即可。
 30 		raf.seek(8*1);
 31 
 32 		byte[] buf = new byte[4];
 33 		raf.read(buf);
 34 		String name = new String(buf);
 35 
 36 		int age = raf.readInt();
 37 
 38 		System.out.println(name+":"+age);
 39 
 40 		raf.close();
 41 
 42 
 43 
 44 	}
 45 
 46 	public static void writeFile() throws IOException {
 47 
 48 		//1,創建一個隨機訪問文件的對象。文件不存在,則創建,存在,則不創建不覆蓋。
 49 		RandomAccessFile raf = new RandomAccessFile("tempfile\\random.txt", "rw");
 50 
 51 		//2,寫入姓名和年齡。
 52 //		raf.write("張三".getBytes());
 53 //		raf.writeInt(97);//保證整數的字節原樣性。
 54 //		raf.write("李四".getBytes());
 55 //		raf.writeInt(99);//保證整數的字節原樣性。
 56 
 57 		//3,隨機寫入。
 58 		raf.seek(8);//設置指針的位置。
 59 		raf.write("王武".getBytes());
 60 		raf.writeInt(100);
 61 		System.out.println(raf.getFilePointer());
 62 
 63 		raf.close();
 64 
 65 
 66 	}
 67 
 68 }

2017-12-31 內容來自API和傳智播客

Java I/O---RandomAccessFile類(隨機訪問文件的讀取和寫入)