JAVA的IO体系-流

本文详细介绍了Java中的IO体系,包括字节流和字符流的概念、各类流的具体用途及其实现方式,同时探讨了字节流与字符流之间的转换。
JAVA的IO体系-流
一.字节流
         字节流是以1个字节为导向的流,每次处理1个字节的字符。字节流类分为InputStream和OutputStream.两者都是Abstract类,不能直接实例化。
(1)InputStream
     InputStream及其子类之间的关系如下:
1) ByteArrayInputStream:把内存中的一个缓冲区作为 InputStream 使用;
2) StringBufferInputStream:把一个 String 对象作为 InputStream;
3) FileInputStream:把一个文件作为 InputStream,实现对文件的读取操作;
4) PipedInputStream:实现了 pipe 的概念,主要在线程中使用;
5) SequenceInputStream:把多个 InputStream 合并为一个 InputStream;
6) FilterInputStream:抽象类,作为”修饰器”与其他对象相连以提供有用接口;
7) ObjectInputStream: 把一个类对象作为InputStream.主要是为了实现对象的串行化.

(2)OutputStream
     OutputStream及其子类之间的关系如下:
1) ByteArrayOutputStream:把信息存入内存中的一个缓冲区中;
2) FileOutputStream:把信息存入文件中;
3) PipedOutputStream:实现了 pipe 的概念,主要在线程中使用;
4) ObjectOutputStream:把对象输出,主要用于实现对象的串行化;
5) FilterOutputStream:抽象类,作为”修饰器”与其他对象相连以提供有用接口.

二.字符流
     字符流是以2个字节(unicode)为导向的流,每次处理2个字节的字符。字符流类分为Reader和Writer.
(1)Reader
1) BufferedReader:把内存中的一个缓冲区作为 InputStream 使用;
2) CharArrayReader:把一个 Char数组作为 InputStream;
3) FileReader:把一个文件作为 InputStream,实现对文件的读取操作;
4) PipedReader:实现了 pipe 的概念,主要在线程中使用;
5) StringReader:把一个String对象作为 InputStream.

(2)Writer
1) BufferedWriter:把内存中的一个缓冲区输出;
2) CharArrayWriter:把一个 Char数组作为 OutputStream;
3) FileWriter:把一个文件作为OutputStream,实现对文件的写入操作;
4) PipedWriter:实现了 pipe 的概念,主要在线程中使用;
5) StringWriter:把一个String对象作为OutputStream.

三.两种不同导向的 stream 之间的转换  
     InputStreamReader 和 OutputStreamReader :
     把一个以字节为导向的 stream 转换成一个以字符为导向的 stream 。InputStreamReader 类是从字节流到字符流的桥梁:它读入字节,并根据指定的编码方式,将之转换为字符流。使用的编码方式可能由名称指定,或平台可接受的缺省编码方式。InputStreamReader 的 read() 方法之一的每次调用,可能促使从基本字节输入流中读取一个或多个字节。为了达到更高效率,考虑用 BufferedReader 封装 InputStreamReader :
     BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

  • InputStreamReader(InputStream) 用缺省的字符编码方式,创建一个InputStreamReader;
  • InputStreamReader(InputStream, String) 用已命名的字符编码方式,创建一个 InputStreamReader 
  • OutputStreamWriter 将多个字符写入到一个输出流,根据指定的字符编码将多个字符转换为字节。每个 OutputStreamWriter 合并它自己的 CharToByteConverter, 因而是从字符流到字节流的桥梁。

源自:

http://blog.youkuaiyun.com/ilibaba/article/details/3955799

http://www.fengfly.com/plus/view-190429-1.html

http://www.doc88.com/p-73048446308.html

http://wenku.baidu.com/view/e12b261255270722192ef731.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值