java字符流操作flush()方法及其注意事项
来源:互联网 发布:ubuntu查找文件路径 编辑:程序博客网 时间:2024/06/06 10:03
flush()方法介绍
查阅文档可以发现,IO流中每一个类都实现了Closeable接口,它们进行资源操作之后都需要执行close()方法将流关闭 。但字节流与字符流的不同之处在于:字节流是直接与数据产生交互,而字符流在与数据交互之前要经过一个缓冲区 。
草图:
使用字符流对资源进行操作的时候,如果不使用close()方法,则读取的数据将保存在缓冲区中,要清空缓冲区中的数据有两种办法:
public abstract void close() throws IOException
关闭流的同时将清空缓冲区中的数据,该抽象方法由具体的子类实现public abstract void flush() throws IOException
不关闭流的话,使用此方法可以清空缓冲区中的数据,但要注意的是,此方法只有Writer类或其子类拥有,而在Reader类中并没有提供。此方法同样是在具体的子类中进行实现 。
public class Writer_Flush_Test { public static void main(String[] args) throws IOException { File file = new File("D:" + File.separator + "IOTest" + File.separator + "newFile.txt"); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } Writer w = new FileWriter(file, true); w.flush(); w.write("@@@这是测试flush方法的字符串***\n"); }}
结果可以发现,清空了缓冲区中的数据再向文件中写入时,数据写不进去 。
flush()使用注意事项
修改以上代码,当清空缓冲区,再写入之后,如果再执行close()关闭流的方法,数据将正常写入 。
public class Writer_Flush_Test { public static void main(String[] args) throws IOException { File file = new File("D:" + File.separator + "IOTest" + File.separator + "newFile.txt"); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } Writer w = new FileWriter(file, true); w.flush(); w.write("@@@这是测试flush方法的字符串***\n"); // 执行之前操作之后使用close()关闭流 w.close(); }}
可以发现此时正常写入文件中 。具体原因未知,希望明白的朋友告知,但就目前来看,要做的是一定要避免这样的错误 。
1 0
- java字符流操作flush()方法及其注意事项
- Java IO:IO流中的flush方法 .
- 关于java中输出流flush()方法
- Java 输出流中的flush方法
- Java中的“流”的flush方法
- Java IO流中的flush()方法
- 关于java中输出流flush()方法
- java 中flush()方法
- java中 flush()方法
- 关于JNI回调JAVA方法及其注意事项
- Java流--flush()
- 解密Java IO流中的flush()方法的由来
- Java中输出流out.flush()方法理解
- Java 字符流操作
- Java字符流操作
- JAVA IO flush()方法问题
- Java中用flush()方法的作用
- Java IO 流中的 flush
- maven学习笔记之常用命令
- 刘汝佳蓝书后缀数组模板解释及补全
- 移动端横向等分问题
- systemui浅析
- Intent
- java字符流操作flush()方法及其注意事项
- android 源码中的单例模式
- [luogu2832] 行路难
- 《我的RobotFramework书》1-6-2 变量文件, Vairable Files
- 影响未来的几个技术概念
- Java Portlet 规范概述
- 内部类和多态还有抽象
- 左右最值最大差
- Spring Autowire自动装配 (XML中的bean的Autowire)