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

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

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



📜文末寄语

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

相关文章:

  • 人工智能在医疗影像诊断上的最新成果:更精准地识别疾病
  • Oracle表索引变为不可用状态了怎么办
  • 【C/C++】红黑树学习笔记
  • python:机器学习概述
  • AI 理论- 模型优化 - 注意力机制
  • 台式机安装新的固态硬盘后无显示
  • OpenLayers 加载测量控件
  • 第七章:组件之城 · 重构世界的拼图术
  • 指令集架构、微架构、厂商对应关系
  • Python_day35 模型可视化与推理
  • vue--ofd/pdf预览实现
  • 《Spark/Flink/Doris离线实时数仓开发》目录
  • CodeForces - 1692D
  • 打卡第27天:函数的定义与参数
  • C++ STL6大组件
  • Linux:再谈进程地址空间
  • 数值分析(电子和通信类)
  • 嵌入式工程师常用软件
  • 服务器硬盘虚拟卷的处理
  • Kotlin MultiPlatform 跨平台版本的记账 App
  • 营销型网站建设公司哪家建设营/短视频怎么赚钱
  • 个体户营业执照可以网站备案/百度快速收录seo工具软件
  • 手游网站建设方案预算/电商培训机构哪家好
  • 手机网站建设深圳/怎样推广品牌
  • 深圳保障性住房和公租房区别/推广网站seo
  • 电子商务网站建设试卷及答案/网站建设制作流程