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)为单位处理数据,适用于所有文件类型(如图片、视频、文本等)。
- 核心类:
InputStream
、OutputStream
- 核心类:
- 字符流(Character Stream):以字符(16-bit Unicode)为单位处理数据,专为文本文件设计(如
.txt
、.java
)。- 核心类:
Reader
、Writer
- 核心类:
三、常用 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();
五、关键注意事项
- 资源关闭:
- 必须用
close()
关闭流,或使用 try-with-resources(Java 7+)自动关闭。
- 必须用
- 缓冲流提升性能:
- 使用
BufferedInputStream
、BufferedReader
等缓冲类减少IO次数。
- 使用
- 字符编码问题:
- 读写文本文件时,需注意编码(如 UTF-8),可使用
InputStreamReader
指定编码:new InputStreamReader(new FileInputStream("file.txt"), StandardCharsets.UTF_8);
- 读写文本文件时,需注意编码(如 UTF-8),可使用
六、IO 流的选择
- 字节流:处理非文本文件(如图片、音频)或未知文件类型。
- 字符流:处理文本文件,避免乱码问题。
七、总结
Java IO 流的核心是理解字节流与字符流的区别,掌握常用类的用法,并注意资源管理和编码问题。建议通过实际项目(如文件复制、日志记录)加深理解。
如果有具体问题或需要更多示例,可以随时问我! 😊
📜文末寄语
- 🟠关注我,获取更多内容。
- 🟡技术动态、实战教程、问题解决方案等内容持续更新中。
- 🟢《全栈知识库》技术交流和分享社区,集结全栈各领域开发者,期待你的加入。
- 🔵加入开发者的《专属社群》,分享交流,技术之路不再孤独,一起变强。
- 🟣点击下方名片获取更多内容🍭🍭🍭👇