系列文章目录
1: Java–io流.
2: Java字节流操作文件.
3: Java 字符流复制文本文件.
4: Java FileInputStream读取文本文件.
一、简介
缓冲流包括
- BufferedInputStream
- BufferedOutputStream
- BufferedReader
- BufferedReader
这几个类,缓冲流是对节点流的一个包装,可以提高文件读写的速度
二、编写代码
public void fileBufferInputStreamTest() throws IOException {
File fileIn = null;
File fileOu = null;
FileInputStream fi = null;
FileOutputStream fo = null;
BufferedInputStream buffi = null;
BufferedOutputStream buffo = null;
try {
// 1.实例化File对象,指明要读取的文件
fileIn = new File("D:\\hello.text");
fileOu = new File("D:\\hello1.text");
// 2.提供具体的流
// 2.1实例化节点流
fi = new FileInputStream(fileIn);
fo = new FileOutputStream(fileOu);
// 2.2实例化缓冲流
buffi = new BufferedInputStream(fi);
buffo = new BufferedOutputStream(fo);
// 3.复制文件:读取,写入
byte[] bytes = new byte[fi.available()];// 修改了这里
int len;// 记录每次读取的字节的个数
while ((len = buffi.read(bytes)) != -1){
buffo.write(bytes, 0, len);
buffo.flush();
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// 4.关闭流
// 要求:BufferedInputStream是FileInputStream的包装,相当于穿在外面的衣服,而FileInputStream则是穿在厘米俺的衣服,脱衣服时应该先脱外面的衣服再拖厘米俺的,因此应该先关闭BufferedInputStream,再关闭FileInputStream
if (buffi != null){
buffi.close();
if (fi != null){
fi.close();
}
}
if (buffo != null){
buffo.close();
if (fo != null){
fo.close();
}
}
}
}
三、使用代码
1.文本文件复制
部分代码片段:
// 1.实例化File对象,指明要读取的文件
fileIn = new File("D:\\hello.text");
fileOu = new File("D:\\hello1.text");
初始文件:
复制出的文件:
结果:正常运行
2.非文本文件
部分代码片段:
// 1.实例化File对象,指明要读取的文件
ffileIn = new File("D:\\视频1.mp4");
fileOu = new File("D:\\视频2.mp4");
初始文件:
复制出的文件:
结果:正常运行