缓冲处理流
1、缓冲处理流:BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream
2、通过构造器,传入节点流
(1)BufferedReader 本类组合
private Reader in;
(2)BufferedWriter 本类组合
private Writer out;
(3)BufferedInputStream 继承父类 FilterInputStream
protected volatile InputStream in;
(4)BufferedOutputStream 继承父类 FilterOutputStream
protected OutputStream out;
3、内部组合缓冲区数组,构造器可以指定缓冲区大小,默认大小 8192
(1)BufferedReader
private char cb[];
(2)BufferedWriter
private char cb[];
(3)BufferedInputStream
protected volatile byte buf[];
(4)BufferedOutputStream
protected byte buf[];
4、输入流的抽象父类:OutputStream、Writer,都定义 flush 方法,所有的输入流都没有 flush 方法
5、Writer 的子类 / 组合缓冲数组的流,需要 flush 才能输出写入
6、调用 close / 缓冲区数组写满时,会自动调用 flush
7、关闭 BufferedReader、BufferedWriter、BufferedInputStream、BufferedOutputStream,只需要关闭外层流即可,底层自动关闭节点流
(例)拷贝文本
try (BufferedReader br = new BufferedReader(new FileReader("C://fileRead.txt"));
BufferedWriter bw = new BufferedWriter(new FileWriter("D://fileWrite.txt"))) {
String line;
while ((line = br.readLine()) != null) {//边读边写
bw.write(line);
bw.newLine();//写一行分隔符,行分隔符字符串由系统属性line.separator定义,并不一定是单个换行符 \n
}
} catch (IOException e) {
e.printStackTrace();
}
(例)拷贝文件
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C://fileRead.txt"));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("D://fileWrite.txt"))) {
byte[] bytes = new byte[1024];
int length;
while ((length = bis.read(bytes)) != -1) {//边读边写
bos.write(bytes, 0, length);//不调用write(byte b[]),防止写入多余数据
}
} catch (IOException e) {
e.printStackTrace();
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战