day20_字节流、字符流、属性集.pdf

preview
需积分: 0 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
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源