本文主要介紹 RandomAccessFile。
RandomAccessFile
RandomAccessFile 是随機通路檔案(包括讀/寫)的類。它支援對檔案随機通路的讀取和寫入,即我們可以從指定的位置讀取/寫入檔案資料。
需
要注意的是,RandomAccessFile
雖然屬于java.io包,但它不是InputStream或者OutputStream的子類;它也不同于FileInputStream和
FileOutputStream。 FileInputStream 隻能對檔案進行讀操作,而FileOutputStream
隻能對檔案進行寫操作;但是,RandomAccessFile 同時支援檔案的讀和寫,并且它支援随機通路。
RandomAccessFile 函數清單


1. RandomAccessFile 模式說明
RandomAccessFile共有4種模式:"r", "rw", "rws"和"rwd"。
說明:
(01) 什麼是“中繼資料”,即metadata?
英文解釋如下:
大緻意思是:
metadata
是“關于資料的資料”。在檔案系統中,資料被包含在檔案和檔案夾中;metadata資訊包括:“資料是一個檔案,一個目錄還是一個連結”,“資料的建立
時間(簡稱ctime)”,“最後一次修改時間(簡稱mtime)”,“資料擁有者”,“資料擁有群組”,“通路權限”等等。
(02) "rw", "rws", "rwd" 的差別。
當操作的檔案是存儲在本地的基礎儲存設備上時(如硬碟, NandFlash等),"rws" 或 "rwd", "rw" 才有差別。
當模式是 "rws" 并且 操作的是基礎儲存設備上的檔案;那麼,每次“更改檔案内容[如write()寫入資料]” 或 “修改檔案中繼資料(如檔案的mtime)”時,都會将這些改變同步到基礎儲存設備上。
當模式是 "rwd" 并且 操作的是基礎儲存設備上的檔案;那麼,每次“更改檔案内容[如write()寫入資料]”時,都會将這些改變同步到基礎儲存設備上。
當模式是 "rw" 并且 操作的是基礎儲存設備上的檔案;那麼,關閉檔案時,會将“檔案内容的修改”同步到基礎儲存設備上。至于,“更改檔案内容”時,是否會立即同步,取決于系統底層實作。
2. 示範程式
源碼如下:


運作結果:
c1=a
c2=b
buf=9876543210
結果說明:
程式會在源檔案所在目錄生成file.txt;file.txt的内容如下:
file.txt對應的16進制内容如下: