作者: Jakob Jenkov  译者: 李璟(jlee381344197@gmail.com)

本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader、BufferedWriter、FilterReader、FilterWriter。

BufferedReader

原文链接

BufferedReader能为字符输入流提供缓冲区,可以提高许多IO处理的速度。你可以一次读取一大块的数据,而不需要每次从网络或者磁盘中一次读取一个字节。特别是在访问大量磁盘数据时,缓冲通常会让IO快上许多。

BufferedReader和BufferedInputStream的主要区别在于,BufferedReader操作字符,而BufferedInputStream操作原始字节。只需要把Reader包装到BufferedReader中,就可以为Reader添加缓冲区(译者注:默认缓冲区大小为8192字节,即8KB)。代码如下:

1 Reader input = new BufferedReader(new FileReader("c:\\data\\input-file.txt"));

你也可以通过传递构造函数的第二个参数,指定缓冲区大小,代码如下:

1 Reader input = new BufferedReader(new FileReader("c:\\data\\input-file.txt"), 8 1024);

这个例子设置了8KB的缓冲区。最好把缓冲区大小设置成1024字节的整数倍,这样能更高效地利用内置缓冲区的磁盘。

除了能够为输入流提供缓冲区以外,其余方面BufferedReader基本与Reader类似。BufferedReader还有一个额外readLine()方法,可以方便地一次性读取一整行字符。

BufferedWriter

原文链接

与BufferedReader类似,BufferedWriter可以为输出流提供缓冲区。可以构造一个使用默认大小缓冲区的BufferedWriter(译者注:默认缓冲区大小8 * 1024B),代码如下:

1 Writer writer = new BufferedWriter(new FileWriter("c:\\data\\output-file.txt"));

也可以手动设置缓冲区大小,代码如下:

1 Writer writer = new BufferedWriter(new FileWriter("c:\\data\\output-file.txt"), 8 1024);

为了更好地使用内置缓冲区的磁盘,同样建议把缓冲区大小设置成1024的整数倍。除了能够为输出流提供缓冲区以外,其余方面BufferedWriter基本与Writer类似。类似地,BufferedWriter也提供了writeLine()方法,能够把一行字符写入到底层的字符输出流中。值得注意是,你需要手动flush()方法确保写入到此输出流的数据真正写入到磁盘或者网络中。

FilterReader

原文链接

与FilterInputStream类似,FilterReader是实现自定义过滤输入字符流的基类,基本上它仅仅只是简单覆盖了Reader中的所有方法。

就我自己而言,我没发现这个类明显的用途。除了构造函数取一个Reader变量作为参数之外,我没看到FilterReader任何对Reader新增或者修改的地方。如果你选择继承FilterReader实现自定义的类,同样也可以直接继承自Reader从而避免额外的类层级结构。

FilterWriter

原文链接

内容同FilterReader,不再赘述。

原创文章,转载请注明: 转载自并发编程网 – ifeve.com本文链接地址: Java IO: 字符流的Buffered和Filter

转载于:https://www.cnblogs.com/dassmeta/p/5323946.html

Java IO: 字符流的Buffered和Filter相关推荐

  1. Java IO: 字符流的Piped和CharArray

    转载自   Java IO: 字符流的Piped和CharArray 作者: Jakob Jenkov 译者: 李璟(jlee381344197@gmail.com) 本章节将简要介绍管道与字符数组相 ...

  2. Java io字符流读入英文_Java IO 系列教程(四)-字符输入流(2)

    本文介绍字符输入流 在前面一节中,我们向一个文件中写入了一些字符,通过图片可以看出总共是6个中文字符和一个换行,总共是20个字节,可以推算出字符编码是utf-8,每个汉子占3三个字节.本文就用字符输入 ...

  3. java io字符流_Java IO流字符流简介及基本使用

    Java IO流字符流简介及常用字符流的基本使用 字符流分为输入字符流(Writer)和输出字符流(Reader),这两种字符流及其子类字符流都有自己专门的功能.在编码中我们常用的输出字符流有File ...

  4. Java.IO 字符流读写文件

    点击上方 IT牧场 ,选择 置顶或者星标 技术干货每日送达! 一.序 上一篇我们谈了 java.IO 文件字节流读写操作(能懂系列Java.io文件字节流读写)大家应该都很熟悉了.但是中文和英文在字符 ...

  5. Java IO - 字符流

    需要读取的目标文件: // 目标文件 String pathName = "d:/z.txt"; File file = new File(pathName); 使用FileRea ...

  6. JAVA.IO字符流

    从字节流和字符流的导向图来,它们之间是相互对应的,比如CharArrayReader和ByteArrayInputStream 字节流和字符流的转化:InputStreamReader可以将Input ...

  7. java -io字符流FileWrite操作演示

    FileWriter字符输出流演示: /* * FiileWriter 字符流的操作 * FileWriter 的构造方法 可传递 File类型 还可以传递String类型 * * 方法 : * wr ...

  8. java binaryreader_Java字符流与字节流区别与用法分析

    本文实例讲述了Java字符流与字节流区别与用法.分享给大家供大家参考,具体如下: 字节流与字符流主要的区别是他们的的处理方式 流分类: 1.Java的字节流 InputStream是所有字节输入流的祖 ...

  9. java中字符流和字节流的区别_java中字节流和字符流有哪些区别

    java中字节流和字符流的区别有:1.定义不同:2.结尾不同:3.处理方式不同:4.缓冲区不同:5.编码方式不同.字节流默认不使用缓冲区,而字符流使用缓冲区.字节流采用ASCII编码,字符流采用uni ...

最新文章

  1. js 月份加6个月_美国切削工具6月份订单较上月增加10.1
  2. 2个基础操作案例带你入门MySQL
  3. 第三季-第23课-Linux网络编程模型
  4. Windows操作系统装机必备软件,值得收藏!
  5. Vue使用debugger
  6. Java中的私有权限(private)
  7. 动手智能小车记(5)-坦克底盘硬件模块大杂烩
  8. android微信运动页面开发,微信小程序仿微信运动步数排行(交互)
  9. Kotlin学习笔记12——数据类和密封类
  10. python,全自动获取图片,并下载你喜欢的美女图片
  11. 让老师们哭笑不得的天才学生们
  12. 客户标签不能只是个“标签”
  13. python token_python 产生token及token验证的方法
  14. i512450h和i512500h对比区别大吗
  15. 微信小程序wxs将数字转换为汉字
  16. pwn入门系列-ret2libc2
  17. Linux下安装navicat
  18. Arduino实验九——感光灯实验
  19. 格式化字符串漏洞利用时计算的偏移到底是什么?
  20. Glamhive创始人Stephanie Sprangers与明星造型师Johnny Wujek和Nicole Chavez、明星发型师Andrew Fitzsimons和时尚影响者Claire Su

热门文章

  1. 获取授时时间_gps时间同步服务器在通信行业的解决方案
  2. 公需科目必须学吗_化学难吗?
  3. 计算机程序输入x是3求输出七年级的题,如图所示是计算机程序计算,若开始输入,则最后输出的结果是  ▲  .  ——青夏教育精英家教网——...
  4. python 查找指定字符在字符串中的次数(全)
  5. 不能执行autowired_想用@Autowired注入static静态成员?官方不推荐你却还偏要这么做...
  6. 《系统集成项目管理工程师》必背100个知识点-28范围管理计划和需求管理计划...
  7. 笔记-信息系统开发基础-架构设计-软件系统架构视图
  8. 软件开发定律系列之布鲁克斯定律有感
  9. Vue+Openlayers+Draw实现画笔切换功能,切换画笔为点、线、面
  10. Chrome浏览器Json查看插件JsonHandle下载以及无法安装插件的解决方法