IO流面試題

1.什麼是比特(Bit),什麼是字節(Byte),什麼是字符(Char),它們長度是多少,各有什麼區別

答案

Bit最小的二進制單位 ,是計算機的操作部分 取值0或者1
Byte是計算機操作數據的最小單位由8位bit組成 取值(-128-127)
Char是用戶的可讀寫的最小單位,在Java裏面由16位bit組成 取值(0-65535)

Bit 是最小單位 計算機 只能認識 0或者1 

8個字節 是給計算機看的
字符 是看到的東西  一個字符=二個字節

 2.什麼是流,按照傳輸的單位,分成哪兩種流,並且他們的父類叫什麼流是指數據的傳輸

答案

字節流,字符流 
字節流:InputStream OutputStream
字符流:Reader Writer

3.流按照傳輸的方向可以分爲哪兩種,分別舉例說明

答案

輸入輸出相對於程序
輸入流InputStream
,輸出流OutputStream

4.按照實現功能分爲哪兩種,分別舉例說明

答案

節點流,處理流
節點流:OutputStream
處理流: OutputStreamWriter

  5.BufferedReader屬於哪種流,它主要是用來做什麼的,它裏面有那些經典的方法

答案

屬於處理流中的緩衝流,可以將讀取的內容存在內存裏面,有readLine()方法

  6.什麼是節點流,什麼是處理流,它們各有什麼用處,處理流的創建有什麼特徵

答案

節點流 直接與數據源相連,用於輸入或者輸出
處理流:在節點流的基礎上對之進行加工,進行一些功能的擴展
處理流的構造器必須要 傳入節點流的子類

  7.如果我要對字節流進行大量的從硬盤讀取,要用那個流,爲什麼

答案

BufferedInputStream 使用緩衝流能夠減少對硬盤的損傷

  8.如果我要打印出不同類型的數據到數據源,那麼最適合的流是那個流,爲什麼

答案

Printwriter 可以打印各種數據類型

  9.怎麼樣把我們控制檯的輸出改成輸出到一個文件裏面,這個技術叫什麼

答案

SetOut(printWriter,printStream)重定向

  11.怎麼樣把輸出字節流轉換成輸出字符流,說出它的步驟

答案

使用 轉換處理流OutputStreamWriter 可以將字節流轉爲字符流
New OutputStreamWriter(new FileOutputStream(File file));

  12.把包括基本類型在內的數據和字符串按順序輸出到數據源,或者按照順序從數據源讀入,一般用哪兩個流

答案

DataInputStream DataOutputStream

  13.把一個對象寫入數據源或者從一個數據源讀出來,用哪兩個流

答案

ObjectInputStream ObjectOutputStream

   14.什麼叫對象序列化,什麼是反序列化,實現對象序列化需要做哪些工作

答案

對象序列化,將對象以二進制的形式保存在硬盤上
反序列化;將二進制的文件轉化爲對象讀取
實現serializable接口

不想讓字段放在硬盤上就加transient

  15.如果在對象序列化的時候不想給一個字段的數據保存在硬盤上面,採用那個關鍵字?

答案

transient關鍵字

  16.在實現序列化接口是時候一般要生成一個serialVersionUID字段,它叫做什麼,一般有什麼用

答案

是版本號,要保持版本號的一致 來進行序列化

爲了防止序列化出錯

17.InputStream裏的read()返回的是什麼,read(byte[] data)是什麼意思,返回的是什麼值

答案

返回的是所讀取的字節的int型(範圍0-255)
read(byte [ ] data)將讀取的字節儲存在這個數組
返回的就是傳入數組參數個數

Read  字節讀取字節  字符讀取字符

  18.OutputStream裏面的write()是什麼意思,write(byte b[], int off, int len)這個方法裏面的三個參數分別是什麼意思

答案

write將指定字節傳入數據源
Byte b[ ]是byte數組
b[off]是傳入的第一個字符
b[off+len-1]是傳入的最後的一個字符 
len是實際長度

  19.流一般需要不需要關閉,如果關閉的話在用什麼方法,一般要在那個代碼塊裏面關閉比較好,處理流是怎麼關閉的,如果有多個流互相調用傳入是怎麼關閉的?

答案

流一旦打開就必須關閉,使用close方法
放入finally語句塊中(finally 語句一定會執行)
調用的處理流就關閉處理流
多個流互相調用只關閉最外層的流

  20.Java中的所有的流可以分爲幾大類,它們的名字是什麼,各代表什麼

答案

分爲 字節輸入流 InputStream 
字節輸出流 OutputStream
字符輸入流 Reader
字符輸出流 Writer
所有流都是這四個流的子類


說下常用的io流

Icon
InputStream,OutputStream,
FileInputStream,FileOutputStream,
BufferedInputStream,BufferedOutputStream
Reader,Writer
BufferedReader,BufferedWriter


21 寫一段代碼讀取一個序列化的對象一般使用哪種Stream?

Icon
A、InputStream B、FileReader C、DataInputStream D、ObjectStream


22 io流怎樣讀取文件的?

Icon
使用File對象獲取文件路徑,通過字符流Reader加入文件,使用字符緩存流BufferedReader處理Reader,再定義一個字符串,循環遍歷出文件。代碼如下:
File file = new File(“d:/spring.txt”);
try {
Reader reader = new FileReader(file);
BufferedReader buffered = new BufferedReader(reader);
String data = null;
while((data = buffered.readLine())!=null){
System.out.println(data);
}
catch (FileNotFoundException e) {
e.printStackTrace();
catch (IOException e) {
e.printStackTrace();
}


23 說說你對io流的理解

Icon
Io流主要是用來處理輸入輸出問題,常用的io流有InputStream,OutputStream,Reader,Writer等


24 JAVA的IO流和readLine方法

Icon
Java的io流用來處理輸入輸出問題,readLine是BufferedReader裏的一個方法,用來讀取一行。


25 用什麼把對象動態的寫入磁盤中,寫入要實現什麼接口。

Icon
ObjectInputStream,需要實現Serializable接口

26  FileInputStream 創建詳情,就是怎樣的創建不報錯,它列出了幾種形式!

Icon
FileInputStream是InputStream的子類,通過接口定義,子類實現創建FileInputStream,


27 用io流中的技術,指定一個文件夾的目錄,獲取此目錄下的所有子文件夾路徑 

28 請問你在什麼情況下會在你得java代碼中使用可序列化? 如何實現java序列化?

Icon
把一個對象寫入數據源或者從一個數據源讀出來,使用可序列化,需要實現Serializable接口

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章