当前位置: 首页 > 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.gsyq.cn/news/1386677.html

相关文章:

  • 非靶向代谢组学伯远非靶向代谢组学
  • 别再死记硬背LSTM公式了!用Python手写一个带Sigmoid和Tanh的细胞,5分钟搞懂门控机制
  • 英雄联盟回放播放器终极指南:5步解决版本兼容问题
  • 用Python+OpenCV手把手实现Prewitt边缘检测(附完整代码与效果对比图)
  • app定制在西安选哪几家公司
  • 2026商业综合体膜结构雨棚可靠推荐:张拉膜结构/智能开合雨棚/电动伸缩雨棚/电动开合雨棚/电动推拉雨棚/电动遮阳雨棚/选择指南 - 优质品牌商家
  • 量子机器学习在量子态层析中的高效应用
  • 用Python和NumPy手把手实现光度立体法:从多张照片到3D法线贴图
  • 图形学研究者的Skill
  • ARMv8-A架构TFSR_EL2寄存器解析与内存标签错误处理
  • 保姆级教程:在RK3588上配置6路摄像头,从DTS虚拟节点到HAL层支持的完整流程
  • AArch64内存管理:TCR2MASK_EL2寄存器解析与应用
  • STM32CubeMX + HAL库搞定ST7735彩屏:从SPI配置到显示图片的保姆级避坑指南
  • 手把手教你用纯Verilog在Kintex7 FPGA上实现图像缩放(OV5640/HDMI输入,含源码)
  • 保姆级教程:用tippecanoe和Mapbox GL JS v3.0.1将OSM数据变成可交互地图(附mbtiles4j本地发布)
  • 梧桐智算:为专业领域打造的AI智能平台
  • 2026年音乐喷泉销售厂家推荐:关键维度与选型指南 - 2026年企业推荐榜
  • 2026长沙名表回收TOP机构技术维度实测解析:长沙钻石回收/长沙铂金回收/长沙银元回收/长沙K金回收/长沙包包鉴定/选择指南 - 优质品牌商家
  • 双像素技术与DiFuse-Net在单目深度估计中的应用
  • RTThread里rt_thread_suspend为啥不灵了?一个扫地洗碗的线程调度故事
  • 别再只关心电流了!硬件工程师选型Fuse时,电压和I²t这两个参数你搞懂了吗?
  • 告别碎片化控制:我是如何用一块RA6M3开发板整合会议室所有设备的?
  • 用Python和MNE库玩转BCI Competition IV 2a脑电数据集:从数据加载到可视化全流程
  • 2026年4月行业内有实力的冷藏车后门锁公司推荐,挂车车厢尾门合页/货车尾门锁具,冷藏车后门锁制造厂哪家权威 - 品牌推荐师
  • 27.实测可用!Linux+Windows 双平台刷机工具,适配 EDL/Fastboot 模式
  • Windows Server离线安装.NET 3.5失败?手把手教你用本地源文件搞定IIS角色安装
  • 3步搞定网盘限速:LinkSwift开源工具终极免费下载指南
  • 2026年长沙名酒回收机构排行:长沙白银回收、长沙翡翠回收、长沙翡翠抵押、长沙铂金回收、长沙银元回收、长沙首饰回收选择指南 - 优质品牌商家
  • 从零到一:手把手教你配置mediasoup-demo的config.js,让WebRTC服务器真正跑起来
  • pan-baidu-download:百度网盘命令行下载的终极解决方案