java 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流
FileInputStream,FileOutputStream,
BufferedInputStream,BufferedOutputStream
Reader,Writer
BufferedReader,BufferedWriter
21 寫一段代碼讀取一個序列化的對象一般使用哪種Stream?
22 io流怎樣讀取文件的?
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流的理解
24 JAVA的IO流和readLine方法
25 用什么把對象動態的寫入磁盤中,寫入要實現什么接口。
26 ?FileInputStream 創建詳情,就是怎樣的創建不報錯,它列出了幾種形式!
FileInputStream是InputStream的子類,通過接口定義,子類實現創建FileInputStream,
27 用io流中的技術,指定一個文件夾的目錄,獲取此目錄下的所有子文件夾路徑?
28 請問你在什么情況下會在你得java代碼中使用可序列化? 如何實現java序列化?
28 PrintStream、BufferedWriter、PrintWriter的比較??
PrintStream類的輸出功能非常強大,通常如果需要輸出文本內容,都應該將輸出流包裝成PrintStream后進行輸出。它還提供其他兩項功能。與其他輸出流不同,PrintStream 永遠不會拋出 IOException;而是,異常情況僅設置可通過 checkError 方法測試的內部標志。另外,為了自動刷新,可以創建一個 PrintStream
BufferedWriter:將文本寫入字符輸出流,緩沖各個字符從而提供單個字符,數組和字符串的高效寫入。通過write()方法可以將獲取到的字符輸出,然后通過newLine()進行換行操作。BufferedWriter中的字符流必須通過調用flush方法才能將其刷出去。并且BufferedWriter只能對字符流進行操作。如果要對字節流操作,則使用BufferedInputStream。
?PrintWriter的println方法自動添加換行,不會拋異常,若關心異常,需要調用checkError方法看是否有異常發生,PrintWriter構造方法可指定參數,實現自動刷新緩存(autoflush);
1. 讀寫原始數據,一般采用什么流?(AC )
A InputStream
B DataInputStream
C OutputStream
D BufferedInputStream
2. 為了提高讀寫性能,可以采用什么流?( DF)
A InputStream
B DataInputStream
C BufferedReader
D BufferedInputStream
E OutputStream
F BufferedOutputStream
3. 對各種基本數據類型和String類型的讀寫,采用什么流?( AD)
A DataInputStream
B BufferedReader
C PrintWriter
D DataOutputStream
E ObjectInputStream
F ObjectOutputStream
4. 能指定字符編碼的I/O流類型是:(BH )
A Reader
B InputStreamReader
C BufferedReader
D Writer
E PrintWriter
F ObjectInputStream
G ObjectOutputStream
H OutputStreamWriter
5. File類型中定義了什么方法來判斷一個文件是否存在?( D)
A createNewFile
B renameTo
C delete
D exists
6. File類型中定義了什么方法來創建一級目錄?( CD)
A createNewFile
B exists
C mkdirs
D mkdir
File類的mkdir方法根據抽象路徑創建目錄;File類的mkdirs方法根據抽象路徑創建目錄,包括創建必需但不存在的父目錄
7. 對文本文件操作用什么I/O流?(AD )A FileReader
B FileInputStream
C RandomAccessFile
D FileWriter
8. 在unix服務器www.openlab.com.cn上提供了基于TCP的時間服務應用,該應用使用port為13。創建連接到此服務器的語句是:(A )
A Socket s = new Socket(“www.openlab.com.cn”, 13);
B Socket s = new Socket(“www.openlab.com.cn:13”);
C Socket s = accept(“www.openlab.com.cn”, 13);
9. 創建一個TCP客戶程序的順序是:(DACBE )
A 獲得I/O流
B 關閉I/O流
C 對I/O流進行讀寫操作
D 建立socket
E 關閉socket
10. 創建一個TCP服務程序的順序是:(BCADEGF )
A 創建一個服務線程處理新的連接
B 創建一個服務器socket
C 從服務器socket接受客戶連接請求
D 在服務線程中,從socket中獲得I/O流
E 對I/O流進行讀寫操作,完成與客戶的交互
F 關閉socket
G 關閉I/O流
11.?Java?UDP編程主要用到的兩個類型是:( BD)
A UDPSocket
B DatagramSocket
C UDPPacket
D DatagramPacket
12. TCP/IP是一種:( B)
A 標準?
B 協議 ?
C 語言 ?
D?算法
總結
以上是生活随笔為你收集整理的java IO流面试总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JSON与XML的区别比较(非常全面)
- 下一篇: java网络编程面试题