一、核心概念Java 文件复制本质就是把文件数据从一个流读到内存再从内存写到另一个流。根据文件类型不同我们用两种不同的流字符缓冲流BufferedReader/BufferedWriter专门处理文本文件.txt/.java/.md 等最常用。字节缓冲流BufferedInputStream/BufferedOutputStream万能复制支持所有文件文本、图片、视频、音频等。二、文本文件复制字符缓冲流适合场景纯文本文件效率比普通字符流高很多。代码示例import java.io.*; public class TextCopy { public static void main(String[] args) { // 源文件路径 String srcPath src/original.txt; // 目标文件路径 String destPath src/copy.txt; // 用try-with-resources自动关闭流 try ( BufferedReader br new BufferedReader(new FileReader(srcPath)); BufferedWriter bw new BufferedWriter(new FileWriter(destPath)) ) { String line; // 按行读取文本 while ((line br.readLine()) ! null) { bw.write(line); bw.newLine(); // 换行还原原文件格式 } System.out.println(文本文件复制完成); } catch (IOException e) { e.printStackTrace(); } } }三、任意文件复制字节缓冲流万能复制适合场景所有类型文件尤其是非文本文件图片、视频、压缩包等。代码示例import java.io.*; public class AnyFileCopy { public static void main(String[] args) { String srcPath src/original.jpg; String destPath src/copy.jpg; try ( BufferedInputStream bis new BufferedInputStream(new FileInputStream(srcPath)); BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(destPath)) ) { byte[] buffer new byte[1024]; // 缓冲数组一次读1KB int len; while ((len bis.read(buffer)) ! -1) { bos.write(buffer, 0, len); } System.out.println(文件复制完成); } catch (IOException e) { e.printStackTrace(); } } }四、两种方式对比方式适用文件优点缺点字符缓冲流纯文本文件读取方便按行读、性能高只能处理文本不能复制图片 / 视频字节缓冲流所有文件万能兼容性强任何文件都能复制读取的是字节处理文本时不如字符流方便五、关键知识点1.缓冲流的作用自带缓冲区减少磁盘 IO 次数大幅提升复制效率比普通 FileInputStream/FileReader 快很多。2.try-with-resources自动关闭流避免手动写 finally 代码更安全简洁。r3.eadLine () 和缓冲数组字符流用 readLine () 按行读文本字节流用 byte [] 数组批量读数据减少 IO 次数。六、一句话总结复制文本文件用字符缓冲流简单高效。复制任意文件用字节缓冲流兼容性强是 “万能复制器”。
Java 文件复制(字符 / 字节缓冲流)
一、核心概念Java 文件复制本质就是把文件数据从一个流读到内存再从内存写到另一个流。根据文件类型不同我们用两种不同的流字符缓冲流BufferedReader/BufferedWriter专门处理文本文件.txt/.java/.md 等最常用。字节缓冲流BufferedInputStream/BufferedOutputStream万能复制支持所有文件文本、图片、视频、音频等。二、文本文件复制字符缓冲流适合场景纯文本文件效率比普通字符流高很多。代码示例import java.io.*; public class TextCopy { public static void main(String[] args) { // 源文件路径 String srcPath src/original.txt; // 目标文件路径 String destPath src/copy.txt; // 用try-with-resources自动关闭流 try ( BufferedReader br new BufferedReader(new FileReader(srcPath)); BufferedWriter bw new BufferedWriter(new FileWriter(destPath)) ) { String line; // 按行读取文本 while ((line br.readLine()) ! null) { bw.write(line); bw.newLine(); // 换行还原原文件格式 } System.out.println(文本文件复制完成); } catch (IOException e) { e.printStackTrace(); } } }三、任意文件复制字节缓冲流万能复制适合场景所有类型文件尤其是非文本文件图片、视频、压缩包等。代码示例import java.io.*; public class AnyFileCopy { public static void main(String[] args) { String srcPath src/original.jpg; String destPath src/copy.jpg; try ( BufferedInputStream bis new BufferedInputStream(new FileInputStream(srcPath)); BufferedOutputStream bos new BufferedOutputStream(new FileOutputStream(destPath)) ) { byte[] buffer new byte[1024]; // 缓冲数组一次读1KB int len; while ((len bis.read(buffer)) ! -1) { bos.write(buffer, 0, len); } System.out.println(文件复制完成); } catch (IOException e) { e.printStackTrace(); } } }四、两种方式对比方式适用文件优点缺点字符缓冲流纯文本文件读取方便按行读、性能高只能处理文本不能复制图片 / 视频字节缓冲流所有文件万能兼容性强任何文件都能复制读取的是字节处理文本时不如字符流方便五、关键知识点1.缓冲流的作用自带缓冲区减少磁盘 IO 次数大幅提升复制效率比普通 FileInputStream/FileReader 快很多。2.try-with-resources自动关闭流避免手动写 finally 代码更安全简洁。r3.eadLine () 和缓冲数组字符流用 readLine () 按行读文本字节流用 byte [] 数组批量读数据减少 IO 次数。六、一句话总结复制文本文件用字符缓冲流简单高效。复制任意文件用字节缓冲流兼容性强是 “万能复制器”。