BufferStream 缓存流
BufferedInputStream
bufferedReader底层有自己维护的缓存区(下面的小案例就是使用bufferreader默认的缓存区)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | package com.iopractise; import java.io.*; /** * 使用字节缓存流读取 */ public class Demo05 { public static void main(String[] args) throws IOException { // 1 创建 FileInputStream fileInputStream = new FileInputStream( "d:\\aaa.txt" ); //也叫做节点流或基础流 BufferedInputStream bufferedReader = new BufferedInputStream(fileInputStream); //2.读取 int data= 0 ; while ((data=bufferedReader.read())!=- 1 ){ System.out.print(( char )data); } //3.关闭资源 bufferedReader.close(); //在关闭bufferReader的时候也就相当于将fileinputstream流关闭了 System.out.println( "\n执行完毕" ); } } |
当然,我们也可以自己构建缓存区
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package com.iopractise; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; /** * 使用字节缓存流读取 我们自己构建缓存区 */ public class Demo06 { public static void main(String[] args) throws IOException { // 1 创建 FileInputStream fileInputStream = new FileInputStream( "d:\\aaa.txt" ); //也叫做节点流或基础流 BufferedInputStream bufferedReader = new BufferedInputStream(fileInputStream); //2.读取 byte [] buff = new byte [ 1024 ]; int count= 0 ; while ((count=bufferedReader.read(buff))!=- 1 ){ System.out.print( new String(buff, 0 ,count)); } //3.关闭资源 bufferedReader.close(); //在关闭bufferReader的时候也就相当于将fileinputstream流关闭了 System.out.println( "\n执行完毕" ); } } |
BufferedOutputStream
使用字节缓存输出流将数据写出到文件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package com.iopractise; import com.sun.media.sound.SoftTuning; import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; /** * 使用字节缓存输出流将数据写出到文件中 */ public class Demo07 { public static void main(String[] args) throws IOException { //1.创建字节缓存输出流 FileOutputStream fileOutputStream = new FileOutputStream( "d:\\buffer.txt" ); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream); //2.写入文件 for ( int i= 0 ;i< 10 ;i++) { //这里不管使用\r或者\n最终都是能够实现换行的效果的。 bufferedOutputStream.write( "helloworld\r" .getBytes()); //如果数据小于8k,如果不调用flush()方法的话,是不会写入到文件中的 bufferedOutputStream.flush(); //这样写虽然效率低了,但是能够尽量防止因为断电原因造成的缓存区的数据没有写入到磁盘中 } //3.关闭资源 bufferedOutputStream.close(); //关闭了bufferedOutputStream也就相当于将fileOutputStream关闭了 //close() 方法执行完毕之后,其实底层也是会调用flush()方法,缓存中的数据刷新到磁盘中。 System.out.println( "执行完毕" ); } } |
分类:
JAVA / java-IO
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY