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

java学习笔记(7)

一、核心概念与场景

文件复制是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流的分类使用:文本文件优先用字符缓冲流,非文本文件必须用字节缓冲流。缓冲流的存在大幅提升了读写效率,而字节流的通用性让它成为竞赛题中“万能复制”的首选方案。

http://www.jsqmd.com/news/887642/

相关文章:

  • 西安国际搬家技术全解析:广州宠物空运、新加坡国际搬家、新加坡宠物托运、杭州国际搬家、杭州宠物空运、澳大利亚国际搬家选择指南 - 优质品牌商家
  • DeepSeek代码风格检查终极配置包,含21个行业定制规则集(限首批下载,仅开放72小时)
  • 41 - Go HTTP 服务端详解:从 net/http 到高性能 Web 服务
  • Unity TextMeshPro富文本实战:从标签安全到动态引擎
  • 2026年射洪市本地装饰公司综合实力排行盘点:射洪装饰公司、射洪装饰、射洪家装、射洪精装修、射洪整装、射洪装修公司选择指南 - 优质品牌商家
  • 移远EC21/EC200模组休眠实战:从13mA异常功耗到稳定6mA的排查与修复
  • DeepSeek系统设计辅助效能断崖式下降的3个信号,第2个90%工程师至今未察觉!
  • Live2D模型资源提取与可编辑资产重建指南
  • 2026温州科室标牌实测评测:温州景观雕塑标识、温州标牌、温州标识牌、温州玻璃钢景观雕塑、温州科室牌、温州精神堡垒选择指南 - 优质品牌商家
  • 量子计算中Loschmidt回声相位测量的创新方法
  • DeepSeek开源协议识别实战手册:7类高危许可证误判案例及自动化检测工具链部署
  • 探索Java开发新趋势:拥抱现代化编程范式
  • 5G R17 TBoMS到底是个啥?用大白话讲透多时隙传输TB块的原理与配置
  • 2026年5月新发布:探寻黑龙江彩砖源头厂家,这五家值得重点关注 - 2026年企业推荐榜
  • 作业本耐用度差距巨大?深圳大明印刷厂拆解合规工艺,告别定制作业本掉页开裂通病
  • 基于物理信息特征工程的机场大雾预报模型零样本迁移研究
  • OpenCV连通域分析实战:手把手教你用C++实现Two-Pass算法(附完整代码)
  • Live2D资源提取本质:Unity中Cubism二进制协议逆向与资产复原
  • ③ AI副业第一步:如何找到适合自己的AI赚钱赛道
  • GitHub五月爆款:AI Agent Skills赛道大爆发,十大趋势项目深度解析
  • 甲烷卫星监测算法优化与实时处理技术
  • AI赋能5G核心网故障诊断:从PCAP解析到智能根因分析的工程实践
  • FPGA驱动AD7606避坑指南:从数据手册到上板调试,串行/并行模式选择与实战代码解析
  • Sora 2 AVI支持背后的真相:为什么官方文档未声明?——基于逆向SDK v2.1.3a的ABI级分析(含AVI RIFF Chunk解析图谱)
  • 2026年线上百货超市投资项目评测:线上百货超市开店、线上超级便利店、线上连锁超市、闪电仓、前置仓加盟、投资即使零售平台选择指南 - 优质品牌商家
  • Hi-C辅助组装新选择:用Chromap+Yahs替代3D-DNA,速度与准确率双提升
  • 【大模型学习】AI大模型应用开发全攻略:从LLM到Agent,手把手带你入门!
  • 别再死磕ResNet了!手把手教你用PyTorch复现ResNeXt(附完整代码与避坑指南)
  • Unity场景卸载内存不降?引用计数才是根本解法
  • 2026年4月附近有名的重大活动风险评估服务商推荐,土地房屋征收社会稳定风险评估,重大活动风险评估服务商哪家权威 - 品牌推荐师