Java知多少(72)檔案的隨機讀寫

來源:互聯網
上載者:User

標籤:

Java.io 包提供了 RandomAccessFile 類用於隨機檔案的建立和訪問。使用這個類,可以跳轉到檔案的任意位置讀寫資料。程式可以在隨機檔案中插入資料,而不會破壞該檔案的其他資料。此外,程式也可以更新或刪除先前儲存的資料,而不用重寫整個檔案。

RandomAccessFile類是Object類的直接子類,包含兩個主要的構造方法用來創 建RandomAccessFile 的對象,如表 10-11 所示。

表 10-11 RandomAccessFile 類的構造方法
構造方法 功能描述
public RandomAccessFile(String name, String mode) 指定隨機檔案流對象所對應的檔案名稱,以 mode 表示對檔案的訪問模式
public RandomAccessFile (File file, String mode) 以 file 指定隨機檔案流對象所對應的檔案名稱,以 mode 表示訪問模式


需要注意的是,mode 表示所建立的隨機讀寫檔案的操作狀態,其取值包括:

  • r:表示以唯讀方式開啟檔案。
  • rw:表示以讀寫方式開啟檔案,使用該模式只用一個對象即可同時實現讀寫操作。


表 10-12 列出了 RandowAccessFile 類常用的方法及說明。

表 10-12 RandowAccessFile 的常用方法
方法 功能描述
long length() 返迴文件長度
void seek(long pos) 移動檔案位置指標,pos 指定從檔案開頭的偏離位元組數
int skipBytes(int n) 跳過 n 個位元組,返回數為實際跳過的位元組數
int read() 從檔案中讀取一個位元組,位元組的高 24 位為 0,若遇到檔案結尾,返回-1
final byte readByte() 從檔案中讀取帶符號的位元組值
final char readChar() 從檔案中讀取一個 Unicode 字元
final void writeChar(inte c) 寫入一個字元,兩個位元組

 

 1 【例 10-12】模仿系統日誌,將資料寫入到檔案尾部。 2 //********** ep10_12.java ********** 3 import java.io.*; 4 class ep10_12{ 5     public static void main(String args[]) throws IOException{ 6         try{ 7             BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); 8             String s=in.readLine(); 9             RandomAccessFile myFile=new RandomAccessFile("ep10_12.log","rw");10             myFile.seek(myFile.length());  //移動到檔案結尾11             myFile.writeBytes(s+"\n");  //寫入資料12             myFile.close();13         }14         catch(IOException e){}15     }16 }

程式運行後在目錄中建立一個 ep10_12.log 的檔案,每次運行時輸入的內容都會在該檔案內容的結尾處添加。

系列文章:Java知多少(上)Java知多少(39)interface介面Java知多少(40)介面和抽象類別的區別Java知多少(41)泛型詳解Java知多少(42)泛型萬用字元和型別參數的範圍Java知多少(43)異常處理基礎Java知多少(44)異常類型Java知多少(45)未被捕獲的異常Java知多少(46)try和catch的使用Java知多少(47)多重catch語句的使用Java知多少(48)try語句的嵌套Java知多少(49)throw:異常的拋出Java知多少(50)Java throws子句Java知多少(51)finallyJava知多少(52)內建異常Java知多少(53)使用Java建立自己的異常子類Java知多少(54)斷言詳解Java知多少(55)線程Java知多少(56)執行緒模式Java知多少(57)主線程Java知多少(58)線程Runnable介面和Thread類詳解Java知多少(59)建立多線程Java知多少(60)isAlive()和join()的使用Java知多少(61)線程優先順序Java知多少(62)線程同步Java知多少(63)線程間通訊Java知多少(64)線程死結Java知多少(65)線程的掛起、恢複和終止Java知多少(66)輸入輸出(IO)和流的概述Java知多少(67)面向字元的輸入資料流Java知多少(68)面向字元的輸出資料流Java知多少(69)面向位元組的輸入輸出資料流Java知多少(70)面向位元組流的應用Java知多少(71)檔案與目錄管理

Java知多少(72)檔案的隨機讀寫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.