Java 流包括字節(jié)流和字符流,字節(jié)流通過IO設(shè)備以字節(jié)數(shù)據(jù)的方式讀入,而字符流則是通過字節(jié)流讀入數(shù)據(jù)轉(zhuǎn)化成字符“流”的形式由用戶驅(qū)使。
流可以通過包裝進(jìn)行功能上的擴充,比如說BufferedStream,可以緩沖流,提高讀取的性能,其實在Java中都是以這種操作IO的。
但是我們不能把BufferedStream當(dāng)成是實際可用的流,其實它們必須包裝一個代表真實的IO設(shè)備的流才能操作,比如說System.in和System.out,或者是數(shù)組和字符串(另一種包裝的流)。
比如說InputStream可以這樣用:
InputStream in = new BufferedInputStream(new BufferedInputStream(System.in));
而字符流呢?
其實字符流沒有實際的形式,只能是通過包裝一些特別的輸入流才能進(jìn)行字符操作,比如說包裝字節(jié)流InputStream:
Reader reader = new InputStreamReader(System.in);
再比如說包裝字符數(shù)組:
char[] in = new char[1024];
Reader reader = new CharArrayReader(in);
了解這些后,就能明白流的操作規(guī)律了。
流可以通過包裝進(jìn)行功能上的擴充,比如說BufferedStream,可以緩沖流,提高讀取的性能,其實在Java中都是以這種操作IO的。
但是我們不能把BufferedStream當(dāng)成是實際可用的流,其實它們必須包裝一個代表真實的IO設(shè)備的流才能操作,比如說System.in和System.out,或者是數(shù)組和字符串(另一種包裝的流)。
比如說InputStream可以這樣用:
InputStream in = new BufferedInputStream(new BufferedInputStream(System.in));
而字符流呢?
其實字符流沒有實際的形式,只能是通過包裝一些特別的輸入流才能進(jìn)行字符操作,比如說包裝字節(jié)流InputStream:
Reader reader = new InputStreamReader(System.in);
再比如說包裝字符數(shù)組:
char[] in = new char[1024];
Reader reader = new CharArrayReader(in);
了解這些后,就能明白流的操作規(guī)律了。