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

JavaSE核心知识点03高级特性03-03(IO流)

🤟致敬读者

  • 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉

📘博主相关

  • 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息

文章目录

    • JavaSE核心知识点03高级特性03-03(IO流)
      • **一、IO 流的作用**
      • **二、IO 流的分类**
        • 1. **按数据流向分**
        • 2. **按数据类型分**
      • **三、常用 IO 类**
        • 1. **字节流**
        • 2. **字符流**
        • 3. **其他工具类**
      • **四、代码示例**
        • 1. **字节流示例:复制图片**
        • 2. **字符流示例:读取文本文件**
        • 3. **控制台输入**
      • **五、关键注意事项**
      • **六、IO 流的选择**
      • **七、总结**


📃文章前言

  • 🔷文章均为学习工作中整理的笔记。
  • 🔶如有错误请指正,共同学习进步。

在这里插入图片描述

JavaSE核心知识点03高级特性03-03(IO流)

Java 中的 IO 流是处理输入/输出操作的核心工具,我会尽量用通俗易懂的方式为你讲解,分为以下几个部分:


一、IO 流的作用

IO(Input/Output)流用于处理数据的输入和输出,例如:

  • 从文件读取数据(输入)
  • 向文件写入数据(输出)
  • 网络数据传输
  • 控制台输入输出

二、IO 流的分类

Java IO 流主要分为两大类:

1. 按数据流向分
  • 输入流(Input Stream):从外部(如文件)读取数据到程序。
  • 输出流(Output Stream):将程序中的数据写入到外部(如文件)。
2. 按数据类型分
  • 字节流(Byte Stream):以字节(8-bit)为单位处理数据,适用于所有文件类型(如图片、视频、文本等)。
    • 核心类:InputStreamOutputStream
  • 字符流(Character Stream):以字符(16-bit Unicode)为单位处理数据,专为文本文件设计(如 .txt.java)。
    • 核心类:ReaderWriter

三、常用 IO 类

1. 字节流
  • 文件读写
    • FileInputStream:读取字节文件
    • FileOutputStream:写入字节文件
  • 缓冲流(高效读写)
    • BufferedInputStream:带缓冲的字节输入流
    • BufferedOutputStream:带缓冲的字节输出流
2. 字符流
  • 文件读写
    • FileReader:读取字符文件
    • FileWriter:写入字符文件
  • 缓冲流(高效读写)
    • BufferedReader:带缓冲的字符输入流
    • BufferedWriter:带缓冲的字符输出流
3. 其他工具类
  • Scanner:方便读取控制台输入或解析文件。
  • PrintWriter:格式化输出文本。

四、代码示例

1. 字节流示例:复制图片
try (FileInputStream fis = new FileInputStream("input.jpg");FileOutputStream fos = new FileOutputStream("output.jpg")
) {byte[] buffer = new byte[1024];int length;while ((length = fis.read(buffer)) != -1) {fos.write(buffer, 0, length);}
} catch (IOException e) {e.printStackTrace();
}
2. 字符流示例:读取文本文件
try (BufferedReader br = new BufferedReader(new FileReader("test.txt"))
) {String line;while ((line = br.readLine()) != null) {System.out.println(line);}
} catch (IOException e) {e.printStackTrace();
}
3. 控制台输入
Scanner scanner = new Scanner(System.in);
System.out.print("请输入内容:");
String input = scanner.nextLine();
System.out.println("你输入的是:" + input);
scanner.close();

五、关键注意事项

  1. 资源关闭
    • 必须用 close() 关闭流,或使用 try-with-resources(Java 7+)自动关闭。
  2. 缓冲流提升性能
    • 使用 BufferedInputStreamBufferedReader 等缓冲类减少IO次数。
  3. 字符编码问题
    • 读写文本文件时,需注意编码(如 UTF-8),可使用 InputStreamReader 指定编码:
      new InputStreamReader(new FileInputStream("file.txt"), StandardCharsets.UTF_8);
      

六、IO 流的选择

  • 字节流:处理非文本文件(如图片、音频)或未知文件类型。
  • 字符流:处理文本文件,避免乱码问题。

七、总结

Java IO 流的核心是理解字节流与字符流的区别,掌握常用类的用法,并注意资源管理和编码问题。建议通过实际项目(如文件复制、日志记录)加深理解。

如果有具体问题或需要更多示例,可以随时问我! 😊



📜文末寄语

  • 🟠关注我,获取更多内容。
  • 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
  • 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
  • 🔵​加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
  • 🟣点击下方名片获取更多内容🍭🍭🍭👇

http://www.xdnf.cn/news/8630.html

相关文章:

  • 5 分钟速通密码学!
  • 人工智能发展
  • 【C/C++】胜者树与败者树:多路归并排序的利器
  • MFC——编程框架和基础
  • “可观、可测、可调、可控“,四可功能如何让光伏电站变身电网“优等生“?
  • Spring AI(8)——流式响应
  • wafer晶圆几何形貌测量系统:厚度(THK)翘曲度(Warp)弯曲度(Bow)等数据测量
  • 直线导轨运转过程中如何避免震动发生?
  • Linux上部署IgH EtherCAT主站教程
  • B2C商城架构对比:ZKmall模板商城为何选择 Spring Cloud
  • 《P1470 [USACO2.3] 最长前缀 Longest Prefix》
  • SOC-ESP32S3部分:9-GPIO输入按键状态读取
  • python打卡训练营打卡记录day34
  • 电力设备类——如何使用YOLOv8模型对配网缺陷检数据集进行训练、评估和可视化 这个配网销钉缺失检测图像数据集 配网缺陷检测图像数据集 配网缺陷
  • 【达梦数据库】groupadd无法打开etc group
  • C++:适配器
  • VsCode配置
  • 前后端分页详解
  • Java的动态加载及类加载器实践
  • UI 设计|提高审美|Linear UI风格分享
  • RxJS 核心操作符详细用法示例
  • AI开发实习生面试总结(持续更新中...)
  • 精华贴分享|个股拥挤度分析研究分析
  • docker安装es连接kibana并安装分词器
  • Windows开机时间过长的原因
  • 射频芯片学习
  • 技术文档的炼金术:从信息碎片到知识体系的系统性构建
  • 《进化陷阱》--AI 生成文章 《连载 1》
  • RxJS 高阶映射操作符详解:map、mergeMap 和 switchMap
  • 大学之大:柏林自由大学2025.5.23