課程
/后端開發
/Java
/Java Socket應用---通信是這樣練成的
講師在章節2-2中12:00時提到:要將字節輸入流轉為字符輸入流。
我認為上面的URL的實例應該是以實例的二進制方式存儲的吧,那為何不優先選擇字節流,尤其是獲取的元流就是字節流的情況下。
我想知道為什么?
2016-06-28
源自:Java Socket應用---通信是這樣練成的 2-2
正在回答
讀取數據有很多種方法,各有各的特點
比如說字節流中,InputStream是最基本的,FileInputStream用來讀取文件,DataInputStream適用于讀取各種類型的數據,BufferedInputStream加緩沖可以提高IO性能
字符流中也有相應的類,InputStreamReader,FileReader,BufferedReader
其中BufferedReader有一個方法readLine(),可以一行一行讀取,這個方法其他的都沒有,使用起來比較方便
再看它的構造方法,需要傳入Reader類型的參數,那么就必須再它前面new一個InputStreamReader,所以需要把字節流轉換成字符流
如果不轉換也可以,直接使用InputStream或者BufferedInputStream,一個字節一個字節讀,或定義數組一些字節一些字節一起讀,都可以,只不過沒有一行一行讀方便
具體可以看io部分的視頻
SoyaDokio 提問者
12132
感覺沒什么太大區別,字符流每次讀取一行字符和字節流帶緩沖的每次讀取指定字節都可以,不過前者可用于字符比較篩選什么的,如果只是單純的讀寫哪種都一樣我感覺
????????????InputStream?is?=?url.openStream(); ????????????BufferedInputStream?in?=?new?BufferedInputStream(is);
純屬個人理解
為了提高性能
字符流處理的單元為2個字節的Unicode字符,分別操作字符、字符數組或字符串,而字節流處理單元為1個字節,?操作字節和字節數組。所以字符流是由Java虛擬機將字節轉化為2個字節的Unicode字符為單位的字符而成的,所以它對多國語言支持性比較好!如果是?音頻文件、圖片、歌曲,就用字節流好點,如果是關系到中文(文本)的,用字符流好點.??
所有文件的儲存是都是字節(byte)的儲存,在磁盤上保留的并不是文件的字符而是先把字符編碼成字節,再儲存這些字節到磁盤。在讀取文件(特別是文本文件)時,也是一個字節一個字節地讀取以形成字節序列.??
字節流可用于任何類型的對象,包括二進制對象,而字符流只能處理字符或者字符串;?2.?字節流提供了處理任何類型的IO操作的功能,但它不能直接處理Unicode字符,而字符流就可以。?
簡單的說,假如一個一個字節的往文件里輸入,一個文件讀寫次數太大了,很毀硬盤,但如果一個一個字符的保存,硬盤讀寫次數就會少很多,甚至可以一行一行的保存。
舉報
分享的是 Java 中的網絡編程,使用Socket實現網絡聊天通信
3 回答為什么要這樣將字節輸入流裝換成字符輸入流?
2 回答關于字節輸入流轉換為字符輸入流的問題~~
1 回答字節輸入流轉換為字符輸入流得時候為什么要編碼??
2 回答將字節輸入流轉換為字符讀取流(帶編碼規則)
2 回答為什么要先獲取字節輸入流再轉化為字符輸入流?可不可以直接用字符輸入了接收?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-07-25
讀取數據有很多種方法,各有各的特點
比如說字節流中,InputStream是最基本的,FileInputStream用來讀取文件,DataInputStream適用于讀取各種類型的數據,BufferedInputStream加緩沖可以提高IO性能
字符流中也有相應的類,InputStreamReader,FileReader,BufferedReader
其中BufferedReader有一個方法readLine(),可以一行一行讀取,這個方法其他的都沒有,使用起來比較方便
再看它的構造方法,需要傳入Reader類型的參數,那么就必須再它前面new一個InputStreamReader,所以需要把字節流轉換成字符流
如果不轉換也可以,直接使用InputStream或者BufferedInputStream,一個字節一個字節讀,或定義數組一些字節一些字節一起讀,都可以,只不過沒有一行一行讀方便
具體可以看io部分的視頻
2016-08-16
2016-07-09
感覺沒什么太大區別,字符流每次讀取一行字符和字節流帶緩沖的每次讀取指定字節都可以,不過前者可用于字符比較篩選什么的,如果只是單純的讀寫哪種都一樣我感覺
純屬個人理解
2016-06-28
為了提高性能
2016-06-28
字符流處理的單元為2個字節的Unicode字符,分別操作字符、字符數組或字符串,而字節流處理單元為1個字節,?操作字節和字節數組。所以字符流是由Java虛擬機將字節轉化為2個字節的Unicode字符為單位的字符而成的,所以它對多國語言支持性比較好!如果是?音頻文件、圖片、歌曲,就用字節流好點,如果是關系到中文(文本)的,用字符流好點.??
所有文件的儲存是都是字節(byte)的儲存,在磁盤上保留的并不是文件的字符而是先把字符編碼成字節,再儲存這些字節到磁盤。在讀取文件(特別是文本文件)時,也是一個字節一個字節地讀取以形成字節序列.??
字節流可用于任何類型的對象,包括二進制對象,而字符流只能處理字符或者字符串;?2.?字節流提供了處理任何類型的IO操作的功能,但它不能直接處理Unicode字符,而字符流就可以。?
簡單的說,假如一個一個字節的往文件里輸入,一個文件讀寫次數太大了,很毀硬盤,但如果一個一個字符的保存,硬盤讀寫次數就會少很多,甚至可以一行一行的保存。