Java輸入輸出流---面試
- 目錄和檔案操作
關鍵考點: File類的概念。 如何用File類看來操作目錄和檔案。
答案: Java提供了java.io.File類對目錄和檔案進行操作。主要的操作方法包括:路徑字串構造方法、isDirectory、isFile、createNewFile、list、getName、delete。
- 寫一個複製檔案的程式
關鍵考點: InputStream的使用方法。 OutputStream的使用方法。
答案: 本題目的設計思路可以有以下幾個步驟。
- 用被複制檔案的路徑建立一個InputStream物件。
- 用複製檔案的新路徑建立一個OutputStream物件。
- 用read()方法迴圈把資料讀出到一個byte陣列中,直到讀出資料的長度小於0。
- 用write()方法把byte陣列中的位元組寫入輸出流。
- 最後關閉輸入流和輸出流。
- 如何使用隨機存取檔案RandomAccessFile類
關鍵考點: RandomAccessFile的用法。
答案: RandomAccessFile的使用思路主要包括以下一些專案:
- 用length()方法獲取檔案的內容長度。
- 用seek()方法隨機的到達任何需要存取資料的地方。
- 呼叫read()方法獲取當前位置的資料,用write()方法寫入資料。
- 完成需要以後,呼叫close()關閉檔案的開啟。
- 位元組流的處理方式
關鍵考點: 流的概念。 如何使用位元組流。
答案: 位元組流處理的是計算機最基本的單位byte,他可以處理任何資料格式的資料。主要操作物件就是byte陣列,通過read()和write()方法把byte陣列中的資料寫入或讀出。
- 字元流的處理方式
關鍵考點: 字元流的概念。 字元流的使用方法。
答案: 字元流是由位元組流包裝而來,它的輸入和輸出流型別包括StringReader和StringWriter、BufferedReader和BufferedWriter。字元流API的基本使用思路有以下步驟:
- 獲取輸入或輸出流物件。可以從File得到,也可以從網路或其他地方得到。
- 根據特定的字元格式建立InputStreamReader或InputStreamWriter物件。
- 使用read()或readLine()方法,得到資料。或使用write()或print()方法進行字元輸出。
- 最後關閉reader或writer。
- 什麼是序列化
關鍵考點: 序列化的概念。
答案: 序列化本質上就是把物件記憶體中的資料按照一定的規則,變成一些列的位元組資料,然後再把這些位元組資料寫入到流中。而反序列化的過程相反,先讀取位元組資料,然後再重新組裝成Java物件。 所有需要進行序列化的類,都必須實現Serializable介面,必要時還需要提供靜態的常量serialVersionUID。
- 如何序列化和反序列化一個Java物件
關鍵考點: 序列化的概念和用法 ObjectOutputStream和ObjectInputStream的使用方法。
答案: 對於物件的輸出和輸入,Java的I/O體系中主要提供了ObjectOutputStream和ObjectInputStream兩個類以供開發者使用,他們的基本使用思路有以下步驟。
- 讓需要序列化的類實現java.io.Serializable介面。
- 提供靜態的long型的常量serialVersionUID。
- 如果是序列化物件,則用一個輸出流建立一個ObjectOutputStream物件,然後呼叫writeObject()方法。
- 如果是反序列化,首先使用一個輸入流建立一個ObjectInputStream物件。然後呼叫readObject()方法,得到一個Object型別的物件。最後再做型別的強制轉換。
- 最後關閉流。