剛學(xué)java流技術(shù)IO編程時(shí),一下出來這么多流,很是不敏感,不感冒,在學(xué)習(xí)了這段時(shí)間,發(fā)現(xiàn)好多項(xiàng)目中的讀寫數(shù)據(jù),輸入輸出用到的都是以前學(xué)的最基本的,但是自己卻不是很理解其根本,今天就說幾個(gè)流中簡(jiǎn)單但又常用的幾個(gè)知識(shí)點(diǎn)
Java.io包中定義了多個(gè)流類型,來實(shí)現(xiàn)輸入輸出功能:
通俗的說節(jié)點(diǎn)流就是一個(gè)簡(jiǎn)單的輸入輸出流,而處理流是“連接”在已存在的字節(jié)流或處理流之上的,通過對(duì)數(shù)據(jù)的處理為程序提供更為強(qiáng)大的讀寫功能。
我們最經(jīng)常用到的節(jié)點(diǎn)流類型是有關(guān)文件處理的有FileReader FileWriter FileInputStream FileOutputStream
Ø FileInputSteam 和 FileOutputStream 類支持其父類InputStream 和OutputStream 所提供的數(shù)據(jù)讀寫方法。
Ø 注意:
§ 在實(shí)例化FileInputStream和FileOutputSteam流時(shí)要用try-catch語句以處理其可能拋出的FileNotFoundException。
§ 在讀寫數(shù)據(jù)時(shí)也要用try-catch語句以處理可能拋出的 IOException。
§ FileNotFoundException是IOException的子類
FileReader 和 FileWriter 分別繼承自Reader和Writer,FileInputSteam與FileOutputStream類似,所不同的時(shí)FileReader和FileWriter向文件輸入和輸出的數(shù)據(jù)單位為字符。
處理流中常用到的有緩沖流 、轉(zhuǎn)換流。
l 緩沖流有BufferedReader BufferedWriter BufferedInputStream BufferedOutputStream ,緩沖流要“套接”在相應(yīng)的節(jié)點(diǎn)流之上,對(duì)讀寫的數(shù)據(jù)提供了緩沖的功能,提高了讀寫的效率,同時(shí)增加了一些新的方法
l BufferedReader提供了readLine方法用于讀取一行字符串(以"r或"n分 隔)。
l BufferedWriter提供了newLine用于寫入一個(gè)行分隔符。
l 對(duì)于輸出的緩沖流,寫出的數(shù)據(jù)會(huì)先在內(nèi)存中緩存,使用flush方法將會(huì)使內(nèi)存中的數(shù)據(jù)立刻寫出。
在Socket編程中接受信息時(shí),不是直接用InputStream接收,而是把內(nèi)容放入緩沖之中進(jìn)行讀取 ,在Socket中的簡(jiǎn)單應(yīng)用如下
轉(zhuǎn)換流InputStreamReader OutputStreamWriter 用于字節(jié)數(shù)據(jù)到字符數(shù)據(jù)之間的轉(zhuǎn)換。其中InputStreamReader 需要和InputStream”套接”,OutputStreamWriter需要和OutputStream套接
數(shù)據(jù)流DataInputStream DataOutputStream 提供了可以存取與機(jī)器無關(guān)的java原始數(shù)據(jù)類型
l Print流:PrintWriter和PrintStream都屬于輸出流,分別針對(duì)與字符和字節(jié),PrintWriter和PrintStream提供了重載的print,Println方法用于多種數(shù)據(jù)類型的輸出。PrintWriter和PrintStream的輸出操作不會(huì)拋出異常,用戶通過檢測(cè)錯(cuò)誤狀態(tài)獲取錯(cuò)誤信息。PrintWriter和PrintStream有自動(dòng)flush功能
l
這幾個(gè)流的類型都是在以后的學(xué)習(xí)中經(jīng)常用到的。就不一一做例子啦
以后所學(xué)到的所有流類型都是繼承 InputStream OutputStream Reader Writer 這四個(gè)抽象的流類型