BufferedOutputStream的学习
2024-09-17 16:21:03
今天写了一下一段代码,结果打开文件却发现要写入文件的内容不仅没写入,原来的内容也消失了,而控制台却显示原文件的内容都被读取出来了,代码如下:
FileInputStream fileInputStream = new FileInputStream(oldPath);
FileOutputStream fileOutputStream =new FileOutputStream(newPath);
//若要显示,BufferedInputStream的read方法每次从字节流中读取一个字符来
int temp=-1;
BufferedInputStream bi = new BufferedInputStream(fileInputStream);
BufferedOutputStream bo = new BufferedOutputStream(fileOutputStream);
while ((temp=bi.read())!=-1){
System.out.print((char)temp);
bo.write((char)temp);
}
后来查了资料才知道,应该在结尾加上bo.flush().因为BufferedOutputStream是从字节流中一个字符一个字符读取,往缓存区中读写和往硬盘中读写的性能远远不同,若是每读取一个字符都往文件中写那么性能很不好,所以是每读取一个字符再把字符写入缓存区中则减少了大量对硬盘的读写,当使用flush清除缓存才会把缓存区中的字符全部写入文件中。上面的代码中,打开了文件,所以把原来的内容清空了,然后读取的内容存在缓冲区中,由于没有调用flush方法,并未写入文件中,仍留在缓存区中就结束了文件操作。
最新文章
- python学习(解析python官网会议安排)
- .net RPC框架选型
- MPAndroidChart饼图属性及相关设置
- sql 去除列中内容的单引号
- Oracle 数据乱码
- 南方数据企业0day
- Mac下安装Scrapy
- java 删除字符串中的特定字符
- JavaScript高级程序设计12.pdf
- 利用Xilinx中的ROM构造查找表来计算sin和cos的方法探讨
- 如何在python脚本里面连续执行adb shell后面的各种命令
- 2015 多校联赛 ——HDU5371(manacher + 枚举)
- UNIX环境高级编程——Linux终端设备详解
- Codeforces Round #544 (Div. 3) D F1 F2
- 关于分页器border重叠问题
- 【转】python类中super()和__init__()的区别
- 创建http.Server实例,端口占用就换个端口
- 在Windows系统上怎么使用SecureCRT链接Linux AWS EC2 -摘自网络
- 2018.08.20 bzoj1143: [CTSC2008]祭祀river(最长反链)
- UWP开发砸手机系列(一)—— Accessibility