JAVA的IO操作之一:基礎概念

來源:互聯網
上載者:User

      方便的IO操作是每個成功的語言所必須具有的,但是要有好的IO庫可不是件容易的事情,因為不僅有三種不同的種類的IO需要考慮(檔案、控制台、網路連接),而且需要通過大量不同的方式與它們通訊(順序、隨機訪問、二進位、字元、按行、按字等等)。
      序列化就是一種用來處理物件流程的機制,所謂物件流程也就是將對象的內容進行流化。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。對象序列化的最主要的用處就是在傳遞和儲存對象(object)的時候,保證對象的完整性和可傳遞性。

      Java庫的IO類分割為輸入與輸出兩個部分,通過繼承,從InputStream(輸入資料流)衍生的所有類都擁有名為read()的基本方法,用於讀取單個位元組或者位元組數組。類似地,從OutputStream衍生的所有類都擁有基本方法write(),用於寫入單個位元組或者位元組數組。然而,我們通常不會用到這些方法;它們之所以存在,是因為更複雜的類可以利用它們,以便提供一個更有用的介面。很有必要按照功能對類進行分類。庫的設計者首先決定與輸入有關的所有類都從InputStream繼承,而與輸出有關的所有類都從OutputStream繼承。
1,InputStream 的類型
      (1) ByteArrayInputStream (位元組數組)。允許記憶體中的一個緩衝區作為InputStream使用。從中提取位元組的緩衝區/作為一個資料來源使用。通過將其同一個FilterInputStream對象串連,可提供一個有用的介面。
      (2) StringBufferInputStream (String對象)。將一個String轉換成InputStream 一個String(字串)。基礎的實施方案實際採用一個StringBuffer(字串緩衝)/作為一個資料來源使用。通過將其同一個FilterInputStream對象串連,可提供一個有用的介面。
      (3) 檔案。FileInputStream 用於從檔案讀取資訊。代表檔案名稱的一個String,或者一個File或FileDescriptor對象/作為一個資料來源使用。通過將其同一個FilterInputStream對象串連,可提供一個有用的介面。

2,OutputStream的類型
      (1).ByteArrayOutputStream 在記憶體中建立一個緩衝區。我們發送給流的所有資料都會置入這個緩衝區。可選緩衝區的初始大小/用於指出資料的目的地。若將其同FilterOutputStream對象串連到一起,可提供一個有用的介面。
      (2).FileOutputStream 將資訊發給一個檔案,用一個String代表檔案名稱,或選用一個File或FileDescriptor對象/用於指出資料的目的地。若將其同FilterOutputStream對象串連到一起,可提供一個有用的介面。

3,FilterInputStream類型
      (1).DataInputStream,與DataOutputStream搭配使用,可以按照可移植方式從流讀取基礎資料型別 (Elementary Data Type),其建構函式參數為InputStream;
      (2).BufferedInputstream,可以防止每次讀取是都得進行實際的寫操作,代表"使用緩衝區",建構函式參數仍為InputStream;

4,FilterOutputStream類型
      (1).DataOutputStream.....
      (2).PrintStream,用於產生格式化輸出,其中DataOutputStream處理資料的儲存,PrintStream處理顯示,建構函式參數為OutputStream;
      (3).BufferedOutputStream.....

5,Reader和Writer(提供相容Unicode與面向字元的IO功能)
      (1).為了關聯"位元組"階層和"字元"階層需要適配器。InputStreamReader 可以把 InputStream 轉換為Reader,
OutputStreamReader 可以把OutputStream 轉換為 Writer
      (2).FileInputStream 對應  FileReader;FileOutputStream 對應 FileWriter;StringBufferInputStream 對應StringReader;
      (3).FilterInputStream 對應 FilterReader,FilterOutputStream 對應 FilterWriter,BufferedInputStream 對應 BufferedReader,BufferedOutputStream 對應 BufferedWriter,PrintStream 對應  PrintWriter,StreamTokenizer 對應 StreamTokenizer

6,操作Java的IO的一般步驟:
      (1).首先建立資料來源IO,
      (2).然後根據需要建立需要封裝的IO類,其建構函式參數為已建立的資料來源IO;
      (3).操作得到的IO控制代碼;
樣本程式:我們以建立一個具有緩衝的檔案輸入資料流為例,假定需要從磁碟讀取檔案“E://Java/data.txt”:
// 建立一個FileInputStream:
FileInputStream fileInput = new FileInputStream(“E://Java/data.txt”);
// 建立一個BufferedInputStream:
BufferedInputStream bufferedInput = new BufferedInputStream(fileInput);
// 現在得到的bufferedInput即是具有緩衝的檔案輸入資料流,或者進一步簡寫如下:
BufferedInputStream input = new BufferedInputStream(new FileInputStream(“E://Java/data.txt”));
// 現在得到的input即是具有緩衝的檔案輸入資料流

 
參考原文:http://blog.csdn.net/Cpp_Java_Man/archive/2006/05/02/705271.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.