Java IO: 字符流的Buffered和Filter
本章节将简要介绍缓冲与过滤相关的reader和writer,主要涉及BufferedReader、BufferedWriter、FilterReader、FilterWriter。
BufferedReaderBufferedReader能为字符输入流提供缓冲区,可以提高许多IO处理的速度。你可以一次读取一大块的数据,而不需要每次从网络或者磁盘中一次读取一个字节。特别是在访问大量磁盘数据时,缓冲通常会让IO快上许多。
BufferedReader和BufferedInputStream的主要区别在于,BufferedReader操作字符,而BufferedInputStream操作原始字节。只需要把Reader包装到BufferedReader中,就可以为Reader添加缓冲区(译者注:默认缓冲区大小为8192字节,即8KB)。代码如下:
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),代码如下:
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 转载自 并发编程网 - ifeve.comJava Web之Filter过滤器原理简介与功能演示 Filter被称作过滤器,其基本功能就是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet 进行响应处理前后实现一些特殊功能。
【JavaWeb】Java Web三大组件之Filter过滤器 JavaWeb中的过滤器:当浏览器访问服务器资源时,过滤器就会拦截浏览器发过来的请求,实现一些特别的功能。 作用:一般用于完成通用的操作,如登录验证,身份验证,统一字符编码和敏感字过滤等。
相关文章
- java操作字符串——CSDN博客
- Java实现 LeetCode 519 随机翻转矩阵
- Java实现 LeetCode 451 根据字符出现频率排序
- Java实现 LeetCode 424 替换后的最长重复字符
- java实现蓝桥杯密码脱落
- Java实现莱布尼兹问题
- Java实现 蓝桥杯VIP 算法训练 判断字符位置
- java IO之 字符流 (字符流 = 字节流 + 编码表) 装饰器模式
- JAVA-IO操作,字节-字符转换流
- url 中非法字符替换,java 正则替换
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
- Java番外篇1——正则表达式
- java web过滤器实际应用(解决中文乱码 html标签转义功能 敏感字符过滤功能)
- 当年的Java考试:JAVA&移动应用&大数据-大三-社区疫苗接种管理系统(全部源码·保姆式呵护)
- 蓝桥杯官网 试题 PREV-229 历届真题 子串分值和【第十一届】【决赛】【研究生组】【C++】【C】【Java】【Python】四种解法
- 【java】Java ArrayList
- 蓝桥杯2011省赛——字符串处理(Java)
- 【Java】java 性能监控及工具
- (七)java转译字符与连接字符串
- 华为校招机试 - 检测热点字符(Java & JS & Python)
- JAVA开发讲义(二)-Java程序设计之数据之谜一