日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

java中io流是类吗_Java中的IO流

發(fā)布時(shí)間:2023/12/10 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java中io流是类吗_Java中的IO流 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天剛剛看完java的io流操作,把主要的脈絡(luò)看了一遍,不能保證以后使用時(shí)都能得心應(yīng)手,但是最起碼用到時(shí)知道有這么一個(gè)功能可以實(shí)現(xiàn),下面對(duì)學(xué)習(xí)進(jìn)行一下簡(jiǎn)單的總結(jié):

IO流主要用于硬板、內(nèi)存、鍵盤等處理設(shè)備上得數(shù)據(jù)操作,根據(jù)處理數(shù)據(jù)的數(shù)據(jù)類型的不同可以分為:字節(jié)流(抽象基類為InPutStream和OutPutStream)和字符流(抽象基類為Reader和Writer)。根據(jù)流向不同,可以分為:輸入流和輸出流。 其中主要結(jié)構(gòu)可以用下圖來(lái)表示:

字符流和字節(jié)流的主要區(qū)別:

1.字節(jié)流讀取的時(shí)候,讀到一個(gè)字節(jié)就返回一個(gè)字節(jié); ?字符流使用了字節(jié)流讀到一個(gè)或多個(gè)字節(jié)(中文對(duì)應(yīng)的字節(jié)數(shù)是兩個(gè),在UTF-8碼表中是3個(gè)字節(jié))時(shí)。先去查指定的編碼表,將查到的字符返回。

2.字節(jié)流可以處理所有類型數(shù)據(jù),如:圖片,MP3,AVI視頻文件,而字符流只能處理字符數(shù)據(jù)。只要是處理純文本數(shù)據(jù),就要優(yōu)先考慮使用字符流,除此之外都用字節(jié)流。

IO流主要可以分為節(jié)點(diǎn)流和處理流兩大類。

一、節(jié)點(diǎn)流類型

該類型可以從或者向一個(gè)特定的地點(diǎn)或者節(jié)點(diǎn)讀寫(xiě)數(shù)據(jù)。主要類型如下:

二、處理流類型

該類型是對(duì)一個(gè)已存在的流的連接和封裝,通過(guò)所封裝的流的功能調(diào)用實(shí)現(xiàn)數(shù)據(jù)讀寫(xiě),處理流的構(gòu)造方法總是要帶一個(gè)其他流對(duì)象作為參數(shù),一個(gè)流對(duì)象進(jìn)過(guò)其他流的多次包裝,叫做流的鏈接。主要可以分為以下幾種:

1、緩沖流(BufferedInPutStream/BufferedOutPutStream和BufferedWriter/BufferedReader)他可以提高對(duì)流的操作效率。

1、緩沖流(BufferedInPutStream/BufferedOutPutStream和BufferedWriter/BufferedReader)他可以提高對(duì)流的操作效率。

寫(xiě)入緩沖區(qū)對(duì)象:BufferedWriter bufw=new BufferedWriter(new FileWriter("buf.txt"));

讀取緩沖區(qū)對(duì)象:BufferedReader bufr=new BufferedReader(new FileReader("buf.txt"));

該類型的流有一個(gè)特有的方法:readLine();一次讀一行,到行標(biāo)記時(shí),將行標(biāo)記之前的字符數(shù)據(jù)作為字符串返回,當(dāng)讀到末尾時(shí),返回null,其原理還是與緩沖區(qū)關(guān)聯(lián)的流對(duì)象的read方法,只不過(guò)每一次讀取到一個(gè)字符,先不進(jìn)行具體操作,先進(jìn)行臨時(shí)儲(chǔ)存,當(dāng)讀取到回車標(biāo)記時(shí),將臨時(shí)容器中儲(chǔ)存的數(shù)據(jù)一次性返回。

2、轉(zhuǎn)換流(InputStreamReader/OutputStreamWriter)

該類型時(shí)字節(jié)流和字符流之間的橋梁,該流對(duì)象中可以對(duì)讀取到的字節(jié)數(shù)據(jù)進(jìn)行指定編碼的編碼轉(zhuǎn)換。

構(gòu)造函數(shù)主要有:InputStreamReader(InputStream); //通過(guò)構(gòu)造函數(shù)初始化,使用的是本系統(tǒng)默認(rèn)的編碼表GBK。

InputStreamWriter(InputStream,String charSet); //通過(guò)該構(gòu)造函數(shù)初始化,可以指定編碼表。

OutputStreamWriter(OutputStream); //通過(guò)該構(gòu)造函數(shù)初始化,使用的是本系統(tǒng)默認(rèn)的編碼表GBK。

OutputStreamwriter(OutputStream,String charSet); //通過(guò)該構(gòu)造函數(shù)初始化,可以指定編碼表。

注意:在使用FileReader操作文本數(shù)據(jù)時(shí),該對(duì)象使用的時(shí)默認(rèn)的編碼表,即

FileReader fr=new FileReader(“a.txt”);

與 ? InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt")); ? 的意義相同。如果要使用指定表編碼表時(shí),必須使用轉(zhuǎn)換流,即如果a.txt中的文件中的字符數(shù)據(jù)是通過(guò)utf-8的形式編碼,那么在讀取時(shí),就必須指定編碼表,那么轉(zhuǎn)換流時(shí)必須的。即:InputStreamReader isr=new InputStreamReader(new FileInputStream("a.txt"),utf-8);

3、數(shù)據(jù)流(DataInputStream/DataOutputStream)

該數(shù)據(jù)流可以方便地對(duì)一些基本類型數(shù)據(jù)進(jìn)行直接的存儲(chǔ)和讀取,不需要再進(jìn)一步進(jìn)行轉(zhuǎn)換,通常只要操作基本數(shù)據(jù)類型的數(shù)據(jù),就需要通過(guò)DataStream進(jìn)行包裝。

構(gòu)造方法:DataInputStreamReader(InputStream);

DataInputStreamWriter(OutputStream);

方法舉例:int readInt();//一次讀取四個(gè)字節(jié),并將其轉(zhuǎn)成int值

writeInt(int);//一次寫(xiě)入四個(gè)字節(jié),注意和write(int)不同,write(int)只將該整數(shù)的最低一個(gè)8位寫(xiě)入,剩余三個(gè)8為丟失

hort readShort();

writeShort(short);

String readUTF();//按照utf-8修改版讀取字符,注意,它只能讀writeUTF()寫(xiě)入的字符數(shù)據(jù)。

writeUTF(String);//按照utf-8修改版將字符數(shù)據(jù)進(jìn)行存儲(chǔ),只能通過(guò)readUTF讀取。

注意:在使用數(shù)據(jù)流讀/存數(shù)據(jù)的時(shí)候,需要有一定的順序,即某個(gè)類型的數(shù)據(jù)先寫(xiě)入就必須先讀出,服從先進(jìn)先出的原則。

四、打印流(PrintStream/PrintWriter)

PrintStream是一個(gè)字節(jié)打印流,System.out對(duì)應(yīng)的類型就是PrintStream,它的構(gòu)造函數(shù)可以接受三種數(shù)據(jù)類型的值:1.字符串路徑。2.File對(duì)象 3.OutputStream

PrintStream是一個(gè)字符打印流,它的構(gòu)造函數(shù)可以接受四種類型的值:1.字符串路徑。2.File對(duì)象 3.OutputStream? 4.Writer? 對(duì)于1、2類型的數(shù)據(jù),可以指定編碼表,也就是字符集,對(duì)于3、4類型的數(shù)據(jù),可以指定自動(dòng)刷新,當(dāng)該自動(dòng)刷新為True時(shí),只有3個(gè)方法可以用:println,printf,format。

五、對(duì)象流(ObjectInputStream/ObjectOutputStream)

該類型的流可以把類作為一個(gè)整體進(jìn)行存取,主要方法有:

Object readObject();該方法拋出異常:ClassNotFountException。

void writeObject(Object):被寫(xiě)入的對(duì)象必須實(shí)現(xiàn)一個(gè)接口:Serializable,否則就會(huì)拋出:NotSerializableException

總結(jié)

以上是生活随笔為你收集整理的java中io流是类吗_Java中的IO流的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。