RandomAccessFile

RandomAccessFile

RandomAccessFile的唯一父類是Object,與其他流父類不同。是用來訪問那些保存數據記錄的檔案的,這樣你就可以用seek( )方法來訪問記錄,並進行讀寫了。這些記錄的大小不必相同;但是其大小和位置必須是可知的。

基本介紹

  • 中文名:隨機讀寫類
  • 外文名:RandomAccessFile
  • 釋義:獨立的類
  • 性質:檔案里移動
  • 用途:你可以用它來設定標記
介紹,工作方式,

介紹

RandomAccessFile是不屬於InputStream和OutputStream類系的。實際上,除了實現DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也實現了這兩個接口),它和這兩個類系毫不相干,甚至都沒有用InputStream和OutputStream已經準備好的功能;它是一個完全獨立的類,所有方法(絕大多數都只屬於它自己)都是從零開始寫的。這可能是因為RandomAccessFile能在檔案裡面前後移動,所以它的行為與其它的I/O類有些根本性的不同。總而言之,它是一個直接繼承Object的,獨立的類。

工作方式

基本上,RandomAccessFile的工作方式是,把DataInputStream和DataOutputStream粘起來,再加上它自己的一些方法,比如定位用的getFilePointer( ),在檔案里移動用的seek( ),以及判斷檔案大小的length( )。此外,它的構造函式還要一個表示以唯讀方式("r"),還是以讀寫方式("rw")打開檔案的參數 (和C的fopen( )一模一樣)。它不支持只寫檔案,從這一點上看,假如RandomAccessFile繼承了DataInputStream,它也許會幹得更好。
只有RandomAccessFile才有seek方法,而這個方法也只適用於檔案。BufferedInputStream有一個mark( )方法,你可以用它來設定標記(把結果保存在一個內部變數里),然後再調用reset( )返回這個位置,但是它的功能太弱了,而且也不怎么實用。
RandomAccessFile的絕大多數功能,如果不是全部的話,已經被JDK1.4的nio的"記憶體映射檔案(memory-mapped files)"給取代了。

相關詞條

熱門詞條

聯絡我們