Java基礎篇之三連005

1、Java中有幾種型別的流?

A:

Java中按流的型別劃分為:

輸入流(InputStream)

輸出流(OutpuStream)

、按實現功能劃分為:

節點流

(可以從或向一個地方讀取資料。eg :

FileReader

)和

處理流

(對一個已存在的流的連線和封裝,透過所封裝的流的功能呼叫實現資料的讀取。eg:

BufferReader

),一般處理流的構造方法總是要帶上一個其他流物件作為引數,一個流物件經過其他流的多次封裝,則稱為流的連結。按處理流的單位劃分為:

位元組流

字元流

,位元組流繼承於

InputStream

OutputStream

,字元流繼承於

InputStreamReader

OutputStreamWriter

2、位元組流如何轉化為字元流,以及位元組流和字元流的區別?

A:

位元組輸入流轉字元輸入流透過

InputStreamReader

實現,構造引數傳入

InputStream

物件,位元組輸出流轉字元輸出流透過

OutputStreamWriter

,構造引數傳入

OutputStream

物件。a:位元組流在讀取時是讀取到一個位元組就返回一個位元組,而位元組流則是讀取到一個或多個位元組時,會先查指定的編碼表(中文對應的位元組時2個,在UTF-8碼錶中時3個位元組),將查到的字元返回。位元組流可以處理所有型別的資料,而字元流只能處理字元資料。只要處理資料時純文字資料,就要優先考慮使用字元流,除此都用位元組流。位元組流主要操作byte型別的資料,以

byte

陣列為準,主要操作

OutputStream

InputStream

。字元處理的單位為2個位元組的

Unicode

字元,分別操作字元、字元陣列和字串,而位元組流處理的單位為1個位元組,所以處理國際化多語言支援,讀取音訊檔案、圖片、影片檔案等用位元組流讀取,讀取文字類的資料,可使用字元流,比如使用

Reader

Writer

專門操作字元流的類。

3、如何將一個Java物件序列化到檔案中或者將序列化的物件儲存的檔案讀取出來?

A:

主要使用到兩個類

ObjectOutputStream

ObjectInputStream

,在序列化物件的時候,物件的類必須實現

Serializable

介面,作為可序列化的標示。讀取程式碼如下:

// 寫入序列化物件到檔案中ObjectOutputStream outputStream = null;try { outputStream = new ObjectOutputStream(new FileOutputStream(new File(“D://test。txt”))); // Object outputStream。writeObject(new Object());} catch (IOException e) { e。printStackTrace();}finally { if(outputStream!=null){ try { outputStream。close(); } catch (IOException e) { e。printStackTrace(); } }}// 讀取序列化檔案中被序列化的物件ObjectInputStream inputStream = null;try { inputStream = new ObjectInputStream(new FileInputStream(new File(“D://test。txt”))); Object obj = inputStream。readObject(); // 。。。todo} catch (Exception e) { // IOException or ClassNotFoundException e。printStackTrace();} finally { if(inputStream != null){ try { inputStream。close(); } catch (IOException e) { e。printStackTrace(); } }}

Java基礎篇之三連005