InputStream 、 InputStreamReader 、 BufferedReader区别
區(qū)別介紹:
1、InputStream、OutputStream
處理字節(jié)流的抽象類
InputStream 是字節(jié)輸入流的所有類的超類,一般我們使用它的子類,如FileInputStream等.
OutputStream是字節(jié)輸出流的所有類的超類,一般我們使用它的子類,如FileOutputStream等.
?
2、InputStreamReader? OutputStreamWriter
處理字符流的抽象類
InputStreamReader 是字節(jié)流通向字符流的橋梁,它將字節(jié)流轉(zhuǎn)換為字符流.
OutputStreamWriter是字符流通向字節(jié)流的橋梁,它將字符流轉(zhuǎn)換為字節(jié)流.
?
3、BufferedReader BufferedWriter
BufferedReader 由Reader類擴(kuò)展而來,提供通用的緩沖方式文本讀取,readLine讀取一個(gè)文本行,
從字符輸入流中讀取文本,緩沖各個(gè)字符,從而提供字符、數(shù)組和行的高效讀取。
BufferedWriter??由Writer?類擴(kuò)展而來,提供通用的緩沖方式文本寫入, newLine使用平臺(tái)自己的行分隔符,
將文本寫入字符輸出流,緩沖各個(gè)字符,從而提供單個(gè)字符、數(shù)組和字符串的高效寫入。
==============================================================
E:/baoyue13.txt 文件內(nèi)容:
123456789abcdefg 235xyz附代碼:
import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader;public class FileInputStreamDemo {public static void main(String[] args) throws Exception {/*** InputStream能從來源處讀取一個(gè)一個(gè)byte,所以它是最低級(jí)的,*/// read()方法返回的int類型,是表示數(shù)據(jù)下一個(gè)字節(jié)的字節(jié)碼,如果已經(jīng)到達(dá)流的最后面了,那就返回-1// 通過char 強(qiáng)轉(zhuǎn),輸出字節(jié)碼的內(nèi)容FileInputStream fileIn2 = new FileInputStream(new File("E:/baoyue13.txt"));int read = fileIn2.read();System.out.println( read);System.out.println((char) read);byte[] bb = new byte[4];int read2 = fileIn2.read(bb);System.out.println( "長度 read2: " + read2);for(byte b:bb) {System.out.println(b);System.out.println((char)b);}int aa;while ((aa = fileIn2.read()) != -1) {System.out.print((char) aa);}System.out.println();System.out.println("--------------------------------");/*** InputStreamReader封裝了InputStream在里頭,它以較高級(jí)的方式,一次讀取一個(gè)一個(gè)字符,* */FileInputStream fileIn3 = new FileInputStream(new File("E:/baoyue13.txt"));InputStreamReader sr = new InputStreamReader(fileIn3);System.out.println((char)sr.read());int a2;while ((a2 = sr.read()) != -1) {System.out.print((char) a2);}System.out.println();System.out.println("--------------------------------");/*** BufferedReader則是比InputStreamReader更高級(jí),* 它封裝了StreamReader類,一次讀取取一行的字符* */FileInputStream fileIn4 = new FileInputStream(new File("E:/baoyue13.txt"));InputStreamReader sr2 = new InputStreamReader(fileIn4);BufferedReader br=new BufferedReader(sr2); String line;while ((line = br.readLine()) != null) {System.out.println(line);}}}執(zhí)行結(jié)果:
49 1 長度 read2: 4 50 2 51 3 52 4 53 5 6789abcdefg 235xyz -------------------------------- 1 23456789abcdefg 235xyz -------------------------------- 123456789abcdefg 235xyz轉(zhuǎn)載于:https://blog.51cto.com/devops2016/2287694
總結(jié)
以上是生活随笔為你收集整理的InputStream 、 InputStreamReader 、 BufferedReader区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 愿只有一个Grid Layout
- 下一篇: The road to learning