java關於RandomAccessFile類的使用

* RandomAccessFile是IO包的類,但是其自成一派,從Object直接繼承而來。 只可以對文件進行操作,可以對文件進行讀取和寫入。
* 當模式爲r是,當文件不存在時會報異常,當模式爲rw時,當文件不存在時,會自己動創建文件,當文件已經存在時 不會對原有文件進行覆蓋。

* RandomAccessFile有強大的文件讀寫功能,其內部是大型 byte[],可以通過seek(),getFilePointer()等方法操作的指針,方便對數據進行寫入與讀取。還可以對基本數據類型進行直接的讀和寫操作。

 * 用途舉例:多線程下載設計

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class RandomAccessFileTest {

	/**
	 * RandomAccessFile是IO包的類,但是其自成一派,從基數中繼承而來。 只可以對文件進行操作,可以對文件進行讀取和寫入。
	 * 當模式爲r是,當文件不存在時會報異常,當模式爲rw時,當文件不存在時,會自己動創建文件,當文件已經存在時 不會對原有文件進行覆蓋。
	 * RandomAccessFile有強大的文件讀寫功能,其內部是大型
	 * byte數組,可以通過seek(),getFilePointer()等方法操作的指針,方便
	 * 對數據進行寫入與讀取。還可以對基本數據類型進行直接的讀和寫操作。
	 */
	public static void main(String[] args) {
		writeTest();
		readTest();
	}

	private static void readTest() {
		RandomAccessFile raf = null;
		try {
			//創建一個隨機訪問對象,且文件的訪問模式爲只讀。
			//注意,一旦模式爲只讀,就不對其進行寫入操作。
			raf = new RandomAccessFile("D:\\raf.txt", "r");
			//文件只讀模式,寫入操作將拋異常
			//raf.write("datou".getBytes());
			
			//可直接操作指針,靈活的訪問內容
			raf.seek(12);
			byte b[] = new byte[4];
			raf.read(b);
			System.out.println(new String(b));
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (raf != null)
					raf.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	private static void writeTest() {
		RandomAccessFile raf = null;
		try {
			//創建一個可讀寫的對象
			raf = new RandomAccessFile("D:\\raf.txt", "rw");
			//寫入數據。 可直接操作指定基本數據類型的對象。
			raf.writeBytes("java hello");
			raf.writeInt(23);
			raf.writeBytes("where are you");
			raf.writeInt(22);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (raf != null)
					raf.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

}




發佈了41 篇原創文章 · 獲贊 198 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章