站稳马步——(11)java I/O整理2

选择流时:
首先确定是输入还是输出;
其次确定是字节流还是字符流;
然后确定是节点流(看构造器,参数为数据来源,参数是String或File之类的)还是处理流;
最后根据数据类型选择输入/输出流。(若考虑性能会在前试着加Buffered)

 

归类说明:

1.1 以字节为导向的stream 
      以字节为导向的stream,表示以字节为单位从stream中读取或往stream中写入信息:
               1.1.1) input stream:
                         1) ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用
                         2) StringBufferInputStream:把一个String对象作为InputStream
                         3) FileInputStream:把一个文件作为InputStream,实现对文件的读取操作
                         4) PipedInputStream:实现了pipe的概念,主要在线程中使用
                         5) SequenceInputStream:把多个InputStream合并为一个InputStream

               1.1.2) Out stream
                         1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中
                         2) FileOutputStream:把信息存入文件中 
                         3) PipedOutputStream:实现了pipe的概念,主要在线程中使用
                         4) SequenceOutputStream:把多个OutStream合并为一个OutStream

1.2 以Unicode字符为导向的stream 
      以Unicode字符为导向的stream,表示以Unicode字符为单位从stream中读取或往stream中写入信息:

              1.2.1) Input Stream
                       1) CharArrayReader:与ByteArrayInputStream对应
                       2) StringReader:与StringBufferInputStream对应
                       3) FileReader:与FileInputStream对应 
                       4) PipedReader:与PipedInputStream对应

              1.2.2) Out Stream
                       1) CharArrayWrite:与ByteArrayOutputStream对应
                       2) StringWrite:无与之对应的以字节为导向的stream 
                       3) FileWrite:与FileOutputStream对应
                       4) PipedWrite:与PipedOutputStream对应 
      以字符为导向的stream基本上对有与之相对应的以字节为导向的stream。两个对应类实现的功能相同,只是在操作时的导向不同。如 

      CharArrayReader和ByteArrayInputStream的作用都是把内存中的一个缓冲区作为InputStream使用,所不同的是前者每次从内

      存中读取一个字节的信息,而后者每次从内存中读取一个字符。 
1.3 两种不现导向的stream之间的转换
     InputStreamReader和OutputStreamReader:把一个以字节为导向的stream转换成一个以字符为导向的stream。

 

经常使用的例子:

 

有关设计模式和序列化放后面整理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值