Java IO学习:字节流与字符流实例解析

需积分: 0 1 下载量 26 浏览量 更新于2024-07-30 收藏 594KB DOC 举报
"io学习笔记" 在Java中,I/O(Input/Output)是处理数据传输的核心部分,主要涉及文件操作、网络通信等。本学习笔记重点介绍了两种基本的流类型:`FileInputStream`和`FileOutputStream`,它们分别是字节输入流和字节输出流,用于对文件进行读写操作。 `FileInputStream`是Java中用于读取文件的字节输入流。在提供的代码示例中,`T001_FileInputStream`类展示了如何使用`FileInputStream`来读取文件内容。首先,通过构造函数`new FileInputStream("D:/io.txt")`创建了一个`FileInputStream`对象,尝试打开指定路径的文件。如果文件不存在,会抛出`FileNotFoundException`,程序通过异常处理捕获并打印错误信息,然后退出。一旦成功打开文件,程序就会进入读取循环,使用`read()`方法逐字节地读取文件内容。当`read()`返回-1时,表示文件已读完。读取到的每个字节被转换为字符并打印,同时统计读取的字节数。最后关闭输入流以释放系统资源。 在代码运行过程中,由于使用的是字节流,当遇到中文字符时,每个中文字符通常由两个字节表示,而`read()`方法一次只读取一个字节,因此打印出来的结果可能是乱码(表现为问号)。解决这个问题的方法是改用字符流`FileReader`,它能更好地处理字符编码,特别是对于多字节编码如UTF-8的中文字符。 `FileOutputStream`是Java中的字节输出流,用于向文件写入数据。虽然在这个学习笔记中没有给出具体的`FileOutputStream`使用示例,但其工作原理与`FileInputStream`类似。创建`FileOutputStream`对象时,可以指定要写入的文件路径。使用`write(int b)`方法可以向文件写入单个字节,或者使用`write(byte[] b)`方法写入字节数组。同样,完成写入后记得调用`close()`方法关闭流。 总结来说,Java的I/O流分为字节流和字符流,其中`FileInputStream`和`FileOutputStream`是字节流的典型代表,适用于处理任意字节数据,包括二进制文件。在处理文本文件,尤其是包含多字节字符的文本时,应考虑使用字符流,如`FileReader`和`FileWriter`,以确保正确的字符编码。理解这两种流的区别和应用场景是Java I/O操作的基础。