java 输入输出流

对于我们常用的GBK中,英文是占用1个字节,中文是2个
  对于UTF-8,英文是1个,中文是3个

  对于Unicode,英文中文都是2个

  Java的流操作分为字节流和字符流两种。
  1、 字节流
  所有的读操作都继承自一个公共超类java.io.InputStream类。
  所有的写操作都继承自一个公共超类java.io.OutputStream类。
  InputStream和OutputStream都是抽象类。
  InputStream有6个低级输入流:


2、 字符流
  注: 字符流是在jdk1.1里面引进的,上面 字节流是在jdk1.0引进的。当用于 处理文本数据时,选择 字符流比字节流更好。但对只出路基本数据类型的开发者,可以继续使用字节流。
  所有的读操作都继承自一个公共超类java.io.Reader类。
  所有的写操作都继承自一个公共超类java.io.Writer类。
  同样 Reader和Writer也是抽象类。


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


OutputStreamWriter 将多个字符写入到一个输出流,根据指定的字符编码将多个字符转换为字节。
每个 OutputStreamWriter 合并它自己的 CharToByteConverter, 因而是从字符流到字节流的桥梁。

(三)Java IO 的一般使用原则:  
一、按数据来源(去向)分类:
1 、是文件: FileInputStream, FileOutputStream, ( 字节流 )FileReader, FileWriter( 字符 )
2 、是 byte[] : ByteArrayInputStream, ByteArrayOutputStream( 字节流 )
3 、是 Char[]: CharArrayReader, CharArrayWriter( 字符流 )
4 、是 String: StringBufferInputStream, StringBufferOuputStream ( 字节流 )StringReader, StringWriter( 字符流 )
5 、网络数据流: InputStream, OutputStream,( 字节流 ) Reader, Writer( 字符流 )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值