IO基本知识
1.什么是比特(Bit),什么是字節(jié)(Byte),什么是字符(Char),它們長度是多少,各有什么區(qū)別
答案
Bit最小的二進(jìn)制單位 ,是計(jì)算機(jī)的操作部分 取值0或者1
Byte是計(jì)算機(jī)操作數(shù)據(jù)的最小單位由8位bit組成 取值(-128-127)
Char是用戶的可讀寫的最小單位,在java里面由16位bit組成 取值(0-65535)
Bit 是最小單位 計(jì)算機(jī) 只能認(rèn)識(shí) 0或者1?
8個(gè)字節(jié) 是給計(jì)算機(jī)看的
字符 是看到的東西? 一個(gè)字符=二個(gè)字節(jié)
?2.什么是流,按照傳輸?shù)膯挝?分成哪兩種流,并且他們的父類叫什么流是指數(shù)據(jù)的傳輸
答案
字節(jié)流,字符流?
字節(jié)流:InputStream OutputStream
字符流:Reader Writer
3.流按照傳輸?shù)姆较蚩梢苑譃槟膬煞N,分別舉例說明
答案
輸入輸出相對(duì)于程序
輸入流InputStream
,輸出流OutputStream
4.按照實(shí)現(xiàn)功能分為哪兩種,分別舉例說明
答案
節(jié)點(diǎn)流,處理流
節(jié)點(diǎn)流:OutputStream
處理流: OutputStreamWriter
??5.BufferedReader屬于哪種流,它主要是用來做什么的,它里面有那些經(jīng)典的方法
答案
屬于處理流中的緩沖流,可以將讀取的內(nèi)容存在內(nèi)存里面,有readLine()方法
??6.什么是節(jié)點(diǎn)流,什么是處理流,它們各有什么用處,處理流的創(chuàng)建有什么特征
答案
節(jié)點(diǎn)流 直接與數(shù)據(jù)源相連,用于輸入或者輸出
處理流:在節(jié)點(diǎn)流的基礎(chǔ)上對(duì)之進(jìn)行加工,進(jìn)行一些功能的擴(kuò)展
處理流的構(gòu)造器必須要 傳入節(jié)點(diǎn)流的子類
??7.如果我要對(duì)字節(jié)流進(jìn)行大量的從硬盤讀取,要用那個(gè)流,為什么
答案
BufferedInputStream?使用緩沖流能夠減少對(duì)硬盤的損傷
??8.如果我要打印出不同類型的數(shù)據(jù)到數(shù)據(jù)源,那么最適合的流是那個(gè)流,為什么
答案
Printwriter?可以打印各種數(shù)據(jù)類型
??9.怎么樣把我們控制臺(tái)的輸出改成輸出到一個(gè)文件里面,這個(gè)技術(shù)叫什么
答案
SetOut(printWriter,printStream)重定向
??11.怎么樣把輸出字節(jié)流轉(zhuǎn)換成輸出字符流,說出它的步驟
答案
使用?轉(zhuǎn)換處理流OutputStreamWriter?可以將字節(jié)流轉(zhuǎn)為字符流
New OutputStreamWriter(new FileOutputStream(File file));
??12.把包括基本類型在內(nèi)的數(shù)據(jù)和字符串按順序輸出到數(shù)據(jù)源,或者按照順序從數(shù)據(jù)源讀入,一般用哪兩個(gè)流
答案
DataInputStream DataOutputStream
??13.把一個(gè)對(duì)象寫入數(shù)據(jù)源或者從一個(gè)數(shù)據(jù)源讀出來,用哪兩個(gè)流
答案
ObjectInputStream ObjectOutputStream
???14.什么叫對(duì)象序列化,什么是反序列化,實(shí)現(xiàn)對(duì)象序列化需要做哪些工作
答案
對(duì)象序列化,將對(duì)象以二進(jìn)制的形式保存在硬盤上
反序列化;將二進(jìn)制的文件轉(zhuǎn)化為對(duì)象讀取
實(shí)現(xiàn)serializable接口
不想讓字段放在硬盤上就加transient
??15.如果在對(duì)象序列化的時(shí)候不想給一個(gè)字段的數(shù)據(jù)保存在硬盤上面,采用那個(gè)關(guān)鍵字?
答案
transient關(guān)鍵字
??16.在實(shí)現(xiàn)序列化接口是時(shí)候一般要生成一個(gè)serialVersionUID字段,它叫做什么,一般有什么用
答案
是版本號(hào),要保持版本號(hào)的一致?來進(jìn)行序列化
為了防止序列化出錯(cuò)
17.InputStream里的read()返回的是什么,read(byte[] data)是什么意思,返回的是什么值
答案
返回的是所讀取的字節(jié)的int型(范圍0-255)
read(byte [ ] data)將讀取的字節(jié)儲(chǔ)存在這個(gè)數(shù)組
返回的就是傳入數(shù)組參數(shù)個(gè)數(shù)
Read??字節(jié)讀取字節(jié)??字符讀取字符
??18.OutputStream里面的write()是什么意思,write(byte b[], int off, int len)這個(gè)方法里面的三個(gè)參數(shù)分別是什么意思
答案
write將指定字節(jié)傳入數(shù)據(jù)源
Byte b[ ]是byte數(shù)組
b[off]是傳入的第一個(gè)字符
b[off+len-1]是傳入的最后的一個(gè)字符?
len是實(shí)際長度
??19.流一般需要不需要關(guān)閉,如果關(guān)閉的話在用什么方法,一般要在那個(gè)代碼塊里面關(guān)閉比較好,處理流是怎么關(guān)閉的,如果有多個(gè)流互相調(diào)用傳入是怎么關(guān)閉的?
答案
流一旦打開就必須關(guān)閉,使用close方法
放入finally語句塊中(finally?語句一定會(huì)執(zhí)行)
調(diào)用的處理流就關(guān)閉處理流
多個(gè)流互相調(diào)用只關(guān)閉最外層的流
??20.Java中的所有的流可以分為幾大類,它們的名字是什么,各代表什么
答案
分為?字節(jié)輸入流?InputStream?
字節(jié)輸出流?OutputStream
字符輸入流?Reader
字符輸出流?Writer
所有流都是這四個(gè)流的子類
說下常用的io流
FileInputStream,FileOutputStream,
BufferedInputStream,BufferedOutputStream
Reader,Writer
BufferedReader,BufferedWriter
21 寫一段代碼讀取一個(gè)序列化的對(duì)象一般使用哪種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 說說你對(duì)io流的理解
24 JAVA的IO流和readLine方法
25 用什么把對(duì)象動(dòng)態(tài)的寫入磁盤中,寫入要實(shí)現(xiàn)什么接口。
26 ?FileInputStream 創(chuàng)建詳情,就是怎樣的創(chuàng)建不報(bào)錯(cuò),它列出了幾種形式!
FileInputStream是InputStream的子類,通過接口定義,子類實(shí)現(xiàn)創(chuàng)建FileInputStream,
27 用io流中的技術(shù),指定一個(gè)文件夾的目錄,獲取此目錄下的所有子文件夾路徑?
28 請(qǐng)問你在什么情況下會(huì)在你得java代碼中使用可序列化? 如何實(shí)現(xiàn)java序列化?
?
轉(zhuǎn)載于:https://www.cnblogs.com/qingtianBKY/p/8021854.html
總結(jié)
- 上一篇: 【链表】BZOJ1588: [HNOI2
- 下一篇: arduino与DS1302时钟调试失败