day20_字节流、字符流、属性集.pdf
需积分: 0 89 浏览量
更新于2021-11-02
收藏 591KB PDF 举报
Java中的IO流是程序与外部数据源之间进行数据传输的重要工具。IO流主要涉及两个核心概念:字节流和字符流。字节流处理的是单个字节的数据,而字符流处理的是Unicode编码的字符。
IO流分为输入流(Input Stream)和输出流(Output Stream)。输入流是从外部数据源(如文件、网络连接等)读取数据到内存,而输出流则是将内存中的数据写入到目标设备。这两个流都有它们的顶级抽象类:字节流的`java.io.InputStream`和`java.io.OutputStream`,以及字符流的`java.io.Reader`和`java.io.Writer`。
字节流是最基础的流类型,它可以处理所有类型的数据,因为所有的数据最终都可以以字节形式存在。字节流包括`java.io.FileInputStream`和`java.io.FileOutputStream`,分别用于读取和写入文件。例如,`FileOutputStream`提供了多种写入数据的方法,如`write(int b)`用于写入单个字节,`write(byte[] b)`用于写入整个字节数组,而`write(byte[] b, int off, int len)`则允许指定偏移量和长度来写入部分数组。
字符流则是以字符为单位进行操作,更适合处理文本数据。`java.io.FileReader`和`java.io.FileWriter`是字符流中用于读取和写入文件的类。字符流在处理文本时会考虑到字符编码,如UTF-8,GBK等,因此更适应于处理包含多国语言的文本数据。
在IO流中,还有一种特殊的流类型,即“属性集”(Properties)。`java.util.Properties`类提供了一种存储和加载配置信息的方式,这些信息通常以键值对的形式存在于属性文件中,如`config.properties`。通过`Properties`类,可以方便地读取和修改这些配置,例如:
```java
Properties prop = new Properties();
InputStream input = null;
try {
input = new FileInputStream("config.properties");
// 加载一个流
prop.load(input);
// 获取属性值
String username = prop.getProperty("username");
String password = prop.getProperty("password");
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (input != null) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
IO流的设计遵循了面向对象的原则,提供了许多子类来适应不同的需求,如过滤流(Filter Stream),缓冲流(Buffered Stream),转换流(InputStreamReader/OutputStreamWriter)等。过滤流可以添加到已存在的流之上,以增加额外的功能或改变数据处理方式;缓冲流可以提高数据读写效率;转换流则允许字节流和字符流之间的转换。
Java的IO流体系结构复杂且功能强大,能够处理各种数据输入和输出场景,同时通过合理的继承和组合,可以灵活应对不同的编程需求。理解并熟练掌握IO流的使用对于进行Java的文件操作、网络通信等任务至关重要。
xiaojiugua99
- 粉丝: 0
- 资源: 31
最新资源
- 【安卓源代码】Android作业(完整前后端+mysql+说明文档).zip
- 瓶子、键盘、电脑、老鼠、笔、人、手机检测30-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 【Java学习+面试指南】 一份涵盖大部分Java程序员所需要掌握的核心知识
- 电子垃圾检测16-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 登录系统123考试45
- 基于大数据python评价舆情LSTM系统 框架 vs2022 + python + echart + django + cnn + lstm + tensorflow + mysql + orm
- 22601134沈晨综合案例 .html
- Qt编写的一些开源的demo,支持Qt4、Qt5、Qt6,支持任意系统,预计会有100多个,一直持续更新完善,代码简洁易懂注释详细,每个都是独立项目,非常适合初学者,代码随意传播使用
- 这个是最开始的代码-登录系统
- 电子游戏检测32-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 【wasm-rust图片png转pdf源码以及二进制发布】
- 网页设计,西藏网站设计与开发,大学生作业,毕业设计
- 互联网 Java 工程师进阶知识完全扫盲:涵盖高并发、分布式、高可用、微服务、海量数据处理等领域知识
- 基于大数据python评价舆情LSTM系统 框架 vs2022 + python + echart + django + cnn + lstm + tensorflow + mysql + orm
- 盒子和数字检测14-YOLO(v5至v9)、COCO、CreateML、Darknet、Paligemma、TFRecord数据集合集.rar
- 爱生活.exe爱生活1.exe爱生活2.exe