写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。
技术是开源的、知识是共享的。
这博客是对自己学习的一点点总结及记录,如果您对 Java、算法 感兴趣,可以关注我的动态,我们一起学习。
用知识改变命运,让我们的家人过上更好的生活
。
缓冲流可以提高数据的读取速度
缓冲流包括:
操作非文本文件
- BufferedInputStream
- BufferedOutputStream
操作文本文件
- BufferedReader
- BufferedWriter
一、利用缓冲流实现对非文本文件的复制操作
将 Lighthouse.jpg 复制为 Lighthouse1.jpg
代码实现:
public class BufferedStreamTest1 {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
try {
// 实例化流对象
File srcFile = new File("Lighthouse.jpg");
File destFile = new File("Lighthouse2.jpg");
// 实例化节点流
fis = new FileInputStream(srcFile);
fos = new FileOutputStream(destFile);
// 实例化缓冲流
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
// 复制操作
byte[] bytes = new byte[1024];
int length;
while ((length = bis.read(bytes)) != -1) {
bos.write(bytes, 0, length);
bos.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭流资源
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
二、利用缓冲流实现对文本文件的复制操作
public class BufferedStreamTest2 {
public static void main(String[] args) {
String srcFile = "D:\\新建文件夹\\冯诺依曼简介1.txt";
String destFile = "D:\\新建文件夹\\冯诺依曼简介2.txt";
copy(srcFile, destFile);
}
private static void copy(String srcFile, String destFile) {
BufferedReader bufferedReader = null;
BufferedWriter bufferedWriter = null;
try {
bufferedReader = new BufferedReader(new FileReader(new File(srcFile)));
bufferedWriter = new BufferedWriter(new FileWriter(new File(destFile)));
String data;
while ((data = bufferedReader.readLine()) != null) {
bufferedWriter.write(data);
// 进行换行
bufferedWriter.newLine();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭流
try {
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
try {
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}