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

Java IO


​一、Java数据流的分类​

1. ​​字节流(Byte Stream)​
  • ​特点​​:以字节(8位)为单位读写数据,适用于​​所有类型文件​​(包括二进制文件如图片、音频、视频等)。
  • ​类命名规则​​:以 Stream 结尾(如 InputStreamOutputStream)。
  • ​常见实现类​​:
    • 文件操作:FileInputStream / FileOutputStream
    • 缓冲优化:BufferedInputStream / BufferedOutputStream
2. ​​字符流(Character Stream)​
  • ​特点​​:以字符(Unicode编码)为单位读写数据,​​仅适用于文本文件​​(如.txt.csv等)。
  • ​类命名规则​​:以 ReaderWriter 结尾(如 ReaderWriter)。
  • ​常见实现类​​:
    • 文件操作:FileReader / FileWriter
    • 缓冲优化:BufferedReader / BufferedWriter
    • 编码转换:InputStreamReader / OutputStreamWriter(可指定字符集)

​二、关键注意事项​

  1. ​字节流的通用性​
    字节流可处理所有文件类型(包括文本),但字符流仅限文本。若用字符流读取二进制文件(如.jpg),会导致数据损坏。

  2. ​字符流的编码优势​
    字符流默认使用Unicode编码,自动处理本地字符集转换,避免乱码(例如读取UTF-8文本时无需手动编解码)。

  3. ​性能优化​

    • 优先使用​​缓冲流​​(如BufferedInputStreamBufferedReader)减少IO操作次数。
    • 字符流底层仍依赖字节流,通过InputStreamReader转换(如 new InputStreamReader(new FileInputStream("file.txt"), "UTF-8"))。

​三、代码示例对比​

字节流读取文件(适合任意文件)
try (InputStream is = new FileInputStream("data.bin")) {int byteData;while ((byteData = is.read()) != -1) {System.out.print((byte) byteData); // 按字节处理}
}
字符流读取文本(避免乱码)
try (Reader reader = new FileReader("text.txt")) {int charData;while ((charData = reader.read()) != -1) {System.out.print((char) charData); // 按字符处理}
}

​四、如何选择?​

  • ​非文本文件​​ → 字节流
  • ​文本文件​​ → 字符流(尤其需处理多语言编码时)
  • ​需要高效IO​​ → 组合缓冲流(如 BufferedReader + FileReader

http://www.lqws.cn/news/92971.html

相关文章:

  • 黑马Java面试笔记之 集合篇(算法复杂度+ArrayList+)
  • WPS 利用 宏 脚本拆分 Excel 多行文本到多行
  • 题山采玉: Day1
  • 【AI Study】第三天,Python基础 - NumPy(1)
  • 【Redis】list 类型
  • 面向对象系统中对象交互的架构设计哲学
  • (四)动手实现多层感知机:深度学习中的非线性建模实战
  • OpenCV CUDA模块图像处理------双边滤波的GPU版本函数bilateralFilter()
  • 基于SDN环境下的DDoS异常攻击的检测与缓解
  • 二叉树day1
  • 如何使用插件和子主题添加WordPress自定义CSS(附:常见错误)
  • Linux系统-基本指令(5)
  • MQTTX连接阿里云的物联网配置
  • 00 Deep learning 之回归、拟合、逻辑回归
  • Nginx+Tomcat负载均衡集群
  • Oracle 故障实例 - 通过备份恢复到某时间点 故障恢复
  • 网络安全-等级保护(等保) 3-3 GB/T 36627-2018 《信息安全技术 网络安全等级保护测试评估技术指南》-2018-09-17发布【现行】
  • # 将本地UI生成器从VLLM迁移到DeepSeek API的完整指南
  • Unity异常上报飞书工具
  • 飞书常用功能(留档)
  • SpringBoot系列之RabbitMQ 实现订单超时未支付自动关闭功能
  • 内网横向之RDP缓存利用
  • 06-排序
  • B站缓存视频数据m4s转mp4
  • SpringBoot中缓存@Cacheable出错
  • 国产高云FPGA实现视频采集转UDP以太网输出,FPGA网络摄像头方案,提供2套Gowin工程源码和技术支持
  • Rust 学习笔记:使用 cargo install 安装二进制 crate
  • 【设计模式-4.7】行为型——备忘录模式
  • python第31天打卡
  • 多模态大语言模型arxiv论文略读(105)