当前位置: 首页 > news >正文

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 次数。
六、一句话总结
复制文本文件:用字符缓冲流,简单高效。
复制任意文件:用字节缓冲流,兼容性强,是 “万能复制器”。

http://www.gsyq.cn/news/1496287.html

相关文章:

  • 人形机器人进真实场景,开发者需要关注哪些技术栈?
  • 创建订单报错‘无定价过程被确定’
  • 水性机调色浆WM系列技术优势:纳米分散赋能高效调色
  • 计算机毕业设计之基于大数据的用户购物系统
  • cat命令将调试信息指定到对应路径下
  • G-Helper终极降压指南:AMD CPU温度直降15℃的完整实战教程
  • 单点ORACLE EBS 网页端
  • QT生成文件添加图标
  • 马年本命年运势
  • 仿照moba游戏账号主页的HTML代码。它采用移动端优先设计,模拟了游戏内个人主页的视觉风格,并展示了玩家信息、常用英雄和近期战绩等核心数据
  • 说这是新出的网剧海报
  • 上海松江区哪里回收黄金+回收白银+回收铂金价格高又靠谱?2026年6月实测 - 沪上贵金属口碑推荐官
  • blender 设置单位
  • pypto昇腾Python工具库深度解析:高级Python绑定与昇腾NPU编程完全指南
  • 还在手动逐字转写音频浪费时间?2026年这4款音频怎么转换成文字产品秒出完整文稿
  • 2026理性选音频文件转文字产品,不花冤枉钱不踩雷我只推这一个
  • IPATool终极指南:5个技巧高效下载iOS应用包
  • 2026年广安别墅EPS构件安装趋势:专业服务商如何定义高品质外装新标准 - 2026年企业资讯
  • 3步搞定智慧树刷课:告别手动点击,学习效率翻倍
  • PoE供电选型:几对线供电,该怎么选?
  • 2026年现阶段行业知名的超声波数控切割机工厂甄选指南与深度解析 - 2026年企业资讯
  • 用 ProVerif 分析第一个协议:手把手解读 .pv 文件与命令行输出
  • Windows资源管理器终极增强:让APK、IPA、APPX文件图标一目了然
  • 工业级跨界处理器i.MX RT1024实战解析:从数据手册到硬件设计
  • 2026 AI搜索排名优化服务商TOP1——花都融景科技,自研技术+双国标资质领跑行业 - 广东科技观察
  • 别再死记硬背!用华为eNSP图解ISIS的L1、L2和L1-2路由器到底有啥区别
  • 如何5分钟搭建PUBG雷达系统:终极战场透视指南
  • 上海长宁区哪里回收黄金+铂金回收+白银回收价格高又靠谱?6月最新行情 - 沪上贵金属口碑推荐官
  • 避开VCS+Verdi大坑:用开源工具链搞定蜂鸟E203的RISC-V指令验证
  • Outfit字体终极指南:9种字重免费几何无衬线字体完全手册