java中有按字節(jié)讀取的InputStream和按字符讀取的Reader,那有沒(méi)有按比特bit讀取的?
網(wǎng)友解答: 這個(gè)肯定是有的。電腦上所有的數(shù)據(jù)其實(shí)都是用字節(jié)(byte)來(lái)表示的,字節(jié)是所有數(shù)據(jù)的基礎(chǔ),讀取字節(jié)是io中最基本的一個(gè)功能。java中inputstream就是可以直接讀取字
這個(gè)肯定是有的。電腦上所有的數(shù)據(jù)其實(shí)都是用字節(jié)(byte)來(lái)表示的,字節(jié)是所有數(shù)據(jù)的基礎(chǔ),讀取字節(jié)是io中最基本的一個(gè)功能。java中inputstream就是可以直接讀取字節(jié)的。inputstream中read()方法就是讀取讀取單個(gè)字節(jié)的,而read(byte[])是讀取一個(gè)字節(jié)數(shù)組的。
java的io組成如下
由上圖可見(jiàn)inputstream是輸入流的一個(gè)基類(lèi),java中是不能直接創(chuàng)建一個(gè)基類(lèi)的,所以要獲取一個(gè)inputstream只能生成一個(gè)具體的實(shí)現(xiàn)類(lèi),例如fileinputstream(文件輸入流)。java io中采用了裝飾器模式(體現(xiàn)在類(lèi)的構(gòu)建器上),通過(guò)裝飾器可以使裝飾類(lèi)增加額外的功能。例如你想按一個(gè)int或者long來(lái)讀取數(shù)據(jù),那你可以使用datainputstream來(lái)讀取,用一個(gè)inputstream來(lái)構(gòu)建一個(gè)datainputstream中就可以了。
網(wǎng)友解答:JAVA的IO流讀取可以分為兩種流讀?。?/p>
1、字節(jié)流:可以用于讀寫(xiě)二進(jìn)制文件及任何類(lèi)型文件
2、字符流:可以用于讀寫(xiě)文本文件,不能操作二進(jìn)制文件
其中字節(jié)流就是以字節(jié)讀取的。
字節(jié)流和字符流的區(qū)別:
讀寫(xiě)單位不同:字節(jié)流以字節(jié)(8bit)為單位,字符流以字符為單位,根據(jù)碼表映射字符,一次可能讀多個(gè)字節(jié)。
處理對(duì)象不同:字節(jié)流能處理所有類(lèi)型的數(shù)據(jù)(如圖片、avi等),而字符流只能處理字符類(lèi)型的數(shù)據(jù)。
結(jié)論:只要是處理純文本數(shù)據(jù),就優(yōu)先考慮使用字符流。 除此之外都使用字節(jié)流。