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