转载:https://www.cnblogs.com/Hadley-pu/p/Stream_1.html
字节流和字符流
顾名思义,字节流就是操作的是字节,字符流操作的就是字符。其中字节流又可以分为字节输入流(InputStream)和字节输出流(OutputStream)。同样的字符流也可以分为字符输入流(Reader)和字符输出流(Writer)。字节输入流的用法和字符输入流的用法类似,字节输出流的用法和字符输出流的用法非常类似,最明显的区别是字节流是对字节的操作,字符流是对字符的操作。
①InputStream和Reader
通过查看API文档可以发现InputStream和Reader的核心方法分别是:
InputStream:
常见子类: ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream,StringBufferInputStream
InputStream方法举例
Reader:
常见子类:BufferedReader
, LineNumberReader
, CharArrayReader
, InputStreamReader
, FileReader
, FilterReader
, PushbackReader
, PipedReader
, StringReader
, Writer
Reader方法举例
如果运行上述两个例子的话会发现输出结果不一样,InputStream举例中输出的不是文件里面的内容,这是因为InputStream读取的是一个个二进制码
2.OutputStream和Writer
OutputStream和Writer的核心方法是“写”,就是将数据写入到输出流里面去。分别看下他们的API上面的方法:
OutputStream:
常见子类:ByteArrayOutputStream, FileOutputStream, FilterOutputStream, ObjectOutputStream, OutputStream, PipedOutputStream
Writer:
常见子类:BufferedWriter, CharArrayWriter, FilterWriter, OutputStreamWriter, PipedWriter, PrintWriter, StringWriter
应为两者都是类似的,这里就举只一个Writer的例子
Writer例子
记得写完之后一定要刷新缓冲,并且关闭流。
我不知道这些有没有说清楚,如果没有说清楚或者错误的地方希望大家不要给我脸,尽情地指出来,不胜感激
下一篇会详细写一下,那个各种流中的常见子类。