為何要將字節(jié)輸入流轉(zhuǎn)換為字符輸入流?
講師在章節(jié)2-2中12:00時(shí)提到:要將字節(jié)輸入流轉(zhuǎn)為字符輸入流。
我認(rèn)為上面的URL的實(shí)例應(yīng)該是以實(shí)例的二進(jìn)制方式存儲(chǔ)的吧,那為何不優(yōu)先選擇字節(jié)流,尤其是獲取的元流就是字節(jié)流的情況下。
我想知道為什么?
講師在章節(jié)2-2中12:00時(shí)提到:要將字節(jié)輸入流轉(zhuǎn)為字符輸入流。
我認(rèn)為上面的URL的實(shí)例應(yīng)該是以實(shí)例的二進(jìn)制方式存儲(chǔ)的吧,那為何不優(yōu)先選擇字節(jié)流,尤其是獲取的元流就是字節(jié)流的情況下。
我想知道為什么?
2016-06-28
舉報(bào)
2016-07-25
讀取數(shù)據(jù)有很多種方法,各有各的特點(diǎn)
比如說(shuō)字節(jié)流中,InputStream是最基本的,F(xiàn)ileInputStream用來(lái)讀取文件,DataInputStream適用于讀取各種類型的數(shù)據(jù),BufferedInputStream加緩沖可以提高IO性能
字符流中也有相應(yīng)的類,InputStreamReader,FileReader,BufferedReader
其中BufferedReader有一個(gè)方法readLine(),可以一行一行讀取,這個(gè)方法其他的都沒(méi)有,使用起來(lái)比較方便
再看它的構(gòu)造方法,需要傳入Reader類型的參數(shù),那么就必須再它前面new一個(gè)InputStreamReader,所以需要把字節(jié)流轉(zhuǎn)換成字符流
如果不轉(zhuǎn)換也可以,直接使用InputStream或者BufferedInputStream,一個(gè)字節(jié)一個(gè)字節(jié)讀,或定義數(shù)組一些字節(jié)一些字節(jié)一起讀,都可以,只不過(guò)沒(méi)有一行一行讀方便
具體可以看io部分的視頻
2016-08-16
2016-07-09
感覺(jué)沒(méi)什么太大區(qū)別,字符流每次讀取一行字符和字節(jié)流帶緩沖的每次讀取指定字節(jié)都可以,不過(guò)前者可用于字符比較篩選什么的,如果只是單純的讀寫哪種都一樣我感覺(jué)
純屬個(gè)人理解
2016-06-28
為了提高性能
2016-06-28
字符流處理的單元為2個(gè)字節(jié)的Unicode字符,分別操作字符、字符數(shù)組或字符串,而字節(jié)流處理單元為1個(gè)字節(jié),?操作字節(jié)和字節(jié)數(shù)組。所以字符流是由Java虛擬機(jī)將字節(jié)轉(zhuǎn)化為2個(gè)字節(jié)的Unicode字符為單位的字符而成的,所以它對(duì)多國(guó)語(yǔ)言支持性比較好!如果是?音頻文件、圖片、歌曲,就用字節(jié)流好點(diǎn),如果是關(guān)系到中文(文本)的,用字符流好點(diǎn).??
所有文件的儲(chǔ)存是都是字節(jié)(byte)的儲(chǔ)存,在磁盤上保留的并不是文件的字符而是先把字符編碼成字節(jié),再儲(chǔ)存這些字節(jié)到磁盤。在讀取文件(特別是文本文件)時(shí),也是一個(gè)字節(jié)一個(gè)字節(jié)地讀取以形成字節(jié)序列.??
字節(jié)流可用于任何類型的對(duì)象,包括二進(jìn)制對(duì)象,而字符流只能處理字符或者字符串;?2.?字節(jié)流提供了處理任何類型的IO操作的功能,但它不能直接處理Unicode字符,而字符流就可以。?
簡(jiǎn)單的說(shuō),假如一個(gè)一個(gè)字節(jié)的往文件里輸入,一個(gè)文件讀寫次數(shù)太大了,很毀硬盤,但如果一個(gè)一個(gè)字符的保存,硬盤讀寫次數(shù)就會(huì)少很多,甚至可以一行一行的保存。