前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自学成才篇:字节流和字符流

自学成才篇:字节流和字符流

作者头像
程序员云帆哥
发布2022-05-12 08:47:38
1550
发布2022-05-12 08:47:38
举报
文章被收录于专栏:程序员云帆哥程序员云帆哥

年假结束了,看着笔记小结一下字节流和字符流。

1.InputStream和OutputStream都是抽象类,分别表示字节输入流和输出流的所有类的超类。

2.Reader、Writer都是抽象类,用于字符流的操作。

InputStreamReader的子类:FileReader

2.1 BufferedReader:

从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。

通常,Reader 所作的每个读取请求都会导致对底层字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,

代码语言:javascript
复制
 	BufferedReader in = new BufferedReader(new FileReader("foo.in"));

2.2 InputStreamReader: InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。  每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。  为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如: 

代码语言:javascript
复制
 BufferedReader in= new BufferedReader(new InputStreamReader(System.in));

2.3 FileReader: 用来读取字符文件的便捷类。此类的构造方法假定默认字符编码和默认字节缓冲区大小都是适当的。要自己指定这些值,可以先在 FileInputStream 上构造一个 InputStreamReader。  FileReader 用于读取字符流。要读取原始字节流,请考虑使用 FileInputStream。 

字节流和字符流区别

(1)字节流没有使用缓冲区,而字符流使用了;

(2)处理各种数据都可以通过字节流完成,而在处理中文的时候使用字符流更好

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档