I/O流(5) 利用缓冲流实现对文件的复制操作

写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。

这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。

用知识改变命运,让我们的家人过上更好的生活

目录

      • 一、利用缓冲流实现对非文本文件的复制操作
      • 二、利用缓冲流实现对文本文件的复制操作

缓冲流可以提高数据的读取速度

缓冲流包括:

操作非文本文件

  • BufferedInputStream
  • BufferedOutputStream

操作文本文件

  • BufferedReader
  • BufferedWriter

一、利用缓冲流实现对非文本文件的复制操作

将 Lighthouse.jpg 复制为 Lighthouse1.jpg

I/O流(5) 利用缓冲流实现对文件的复制操作_第1张图片
代码实现:

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();
            }
        }
    }
}

I/O流(5) 利用缓冲流实现对文件的复制操作_第2张图片

二、利用缓冲流实现对文本文件的复制操作

I/O流(5) 利用缓冲流实现对文件的复制操作_第3张图片

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();
            }
        }
    }
}

I/O流(5) 利用缓冲流实现对文件的复制操作_第4张图片

你可能感兴趣的:(Java)