Java文件复制:字符缓冲流和字节缓冲流的实现

 更新时间:2026年07月28日 10:06:32   作者:2401_88461221  
本文主要介绍了Java文件复制的实现,包括字符缓冲流 和 字节缓冲流,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

做作业时经常要复制文件,Java提供了两种好用的方式:

  • 文本文件 → 用字符缓冲流(BufferedReader / BufferedWriter)
  • 任何文件(图片、视频等)→ 用字节缓冲流(BufferedInputStream / BufferedOutputStream)

缓冲流就像一个大水桶,一次多装点水,比一滴一滴倒快得多。

1. 文本文件复制(字符缓冲流)

适用于 .txt、.java 等纯文本文件。

思路:

把上面两段代码拷贝到你的IDE里,改一下文件名,就能直接运行啦。作业搞定!😊

  1. 用 BufferedReader 读取源文件(按行读)
  2. 用 BufferedWriter 写入目标文件

记得关闭资源

import java.io.*;

public class TextCopy {
    public static void main(String[] args) {
        try (
            BufferedReader br = new BufferedReader(new FileReader("source.txt"));
            BufferedWriter bw = new BufferedWriter(new FileWriter("target.txt"));
        ) {
            String line;
            while ((line = br.readLine()) != null) {
                bw.write(line);
                bw.newLine();   // 换行
            }
            System.out.println("文本复制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2. 任意文件复制(字节缓冲流)

不管是图片、音乐、压缩包,统统可以用字节流复制,它是万能的。

思路

  • 用 BufferedInputStream 读取源文件(一次读一个字节数组)
  • 用 BufferedOutputStream 写入目标文件
  • 用 byte[] 数组当缓冲区,效率更高
import java.io.*;
public class AnyCopy {
    public static void main(String[] args) {
        try (
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("photo.jpg"));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("photo_copy.jpg"));
        ) {
            byte[] buffer = new byte[8192];   // 8KB的小桶
            int len;
            while ((len = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, len);
            }
            System.out.println("任意文件复制成功!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

总结对比

类型用什么流适合文件
文本复制BufferedReader + BufferedWriter文本文件(.txt, .java等)
任意文件复制BufferedInputStream + BufferedOutputStream所有文件(图片、视频、exe等)

记住:

  • 文本用字符流(方便按行读)
  • 其他用字节流(万能)
  • 加缓冲能提速,一定要用!

到此这篇关于Java文件复制:字符缓冲流 和 字节缓冲流的实现的文章就介绍到这了,更多相关Java文件复制内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Spring不同类型的注入方式 p-namespace,c-namespace

    关于Spring不同类型的注入方式 p-namespace,c-namespace

    这篇文章主要介绍了Spring不同类型的注入方式 p-namespace,c-namespace。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 浅谈Java8对字符串连接的改进正确姿势

    浅谈Java8对字符串连接的改进正确姿势

    这篇文章主要介绍了Java8:对字符串连接的改进,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • SpringBoot项目如何打war包问题详解

    SpringBoot项目如何打war包问题详解

    传统的部署方式:将项目打成war包,放入tomcat的webapps目录下面,启动tomcat,即可访问.文中有非常详细的介绍,对正在学习springboot的小伙伴很有帮助,需要的朋友可以参考下
    2021-05-05
  • 在spring中实例化bean无效的问题

    在spring中实例化bean无效的问题

    这篇文章主要介绍了在spring中实例化bean无效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • SpringCloud feign微服务调用之间的异常处理方式

    SpringCloud feign微服务调用之间的异常处理方式

    这篇文章主要介绍了SpringCloud feign微服务调用之间的异常处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 看过就懂的java零拷贝及实现方式详解

    看过就懂的java零拷贝及实现方式详解

    这篇文章主要为大家详细的介绍了什么是零拷贝,传统的IO执行流程,零拷贝相关的知识点回顾,零拷贝实现的几种方式及java提供的零拷贝方式相关内容,有需要的朋友可以借鉴参考下
    2022-01-01
  • 异常点/离群点检测算法——LOF解析

    异常点/离群点检测算法——LOF解析

    这篇文章主要介绍了异常点/离群点检测算法——LOF解析,通过图解文字描述的方式详细的解析了该算法,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • IDEA中make directory as的作用及说明

    IDEA中make directory as的作用及说明

    这篇文章主要介绍了IDEA中make directory as的作用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • Spring 依赖注入、AOP代理全方面解析

    Spring 依赖注入、AOP代理全方面解析

    文章介绍了软件开发中的开闭原则、依赖倒置原则及Spring非侵入式设计,通过IoC和DI实现解耦,提升系统扩展性、可测试性及架构迁移能力,强调框架能力以无感知方式注入业务代码的核心优势,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-08-08
  • Springboot全局异常捕获及try catch区别解析

    Springboot全局异常捕获及try catch区别解析

    这篇文章主要介绍了Springboot全局异常捕获及try catch区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06

最新评论