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介面