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

发布于:2025-05-24 ⋅ 阅读:(18) ⋅ 点赞:(0)

🤟致敬读者

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

📘博主相关



📃文章前言

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

在这里插入图片描述

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

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



📜文末寄语

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


网站公告

今日签到

点亮在社区的每一天
去签到