一、核心概念与场景文件复制是IO流的经典应用场景分为文本文件复制和任意文件复制两类核心区别在于使用的流类型文本文件优先用字符缓冲流操作方便且效率高图片、视频、音频等二进制文件只能用字节缓冲流实现“万能复制”。二、文本文件复制字符缓冲流字符缓冲流 BufferedReader / BufferedWriter 是文本文件复制的首选支持按行读取操作便捷且性能优异。示例代码import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;public class TextCopyDemo {public static void main(String[] args) throws IOException { // 1. 创建字符缓冲输入流读取源文件 BufferedReader br new BufferedReader(new FileReader(source.txt)); // 2. 创建字符缓冲输出流写入目标文件 BufferedWriter bw new BufferedWriter(new FileWriter(target.txt)); String line; // 3. 按行读取文本直到文件末尾返回null while ((line br.readLine()) ! null) { bw.write(line); bw.newLine(); // 写入换行符保证格式一致 } // 4. 关闭流后开先关 bw.close(); br.close(); }}readLine() 可以直接读取一整行文本避免手动处理换行符适合纯文本文件缓冲流自带8192字节的缓冲区减少IO次数比直接用 FileReader / FileWriter 效率高很多。三、任意文件复制字节缓冲流万能复制字节缓冲流 BufferedInputStream / BufferedOutputStream 不区分文件类型支持复制图片、视频、音频、可执行文件等所有格式是“万能复制”的实现方式。示例代码import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;public class FileCopyDemo {public static void main(String[] args) throws IOException { // 1. 创建字节缓冲输入流读取源文件如图片、视频 BufferedInputStream bis new BufferedInputStream(new FileInputStream(1.jpg)); // 2. 创建字节缓冲输出流写入目标文件 BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(2.jpg)); // 3. 创建缓冲区数组每次读取1024字节 byte[] buf new byte[1024]; int len; // 4. 循环读取直到文件末尾返回-1 while ((len bis.read(buf)) ! -1) { bos.write(buf, 0, len); // 写入实际读取到的字节数避免多余数据 } // 5. 关闭流后开先关 bos.close(); bis.close(); }}字节流按字节读取文件不会破坏二进制数据因此能复制任意类型的文件 byte[] buf new byte[1024] 定义了缓冲区大小每次批量读写大幅提升复制效率 write(buf, 0, len) 写入时指定实际读取的字节数避免写入缓冲区中残留的旧数据。四、学习总结文件复制的核心是IO流的分类使用文本文件优先用字符缓冲流非文本文件必须用字节缓冲流。缓冲流的存在大幅提升了读写效率而字节流的通用性让它成为竞赛题中“万能复制”的首选方案。