Java IO实践:从文件读写与字符编码转换

需积分: 10 21 下载量 66 浏览量 更新于2024-08-18 收藏 362KB PPT 举报
"Java IO核心知识的读者和作者练习,主要涉及从文件中读取内容并写入到另一个文件中,同时关注不同字符编码的处理。练习中提到了使用OutputStreamWriter来创建输出流,分别以UTF-8和UTF-16编码写入文件。参考代码为MyReaderWriter.java。" 在Java的IO系统中,流是数据传输的基础,它充当了程序与外部世界之间数据交换的桥梁。流分为两种主要类型:输入流(InputStream)和输出流(OutputStream)。这些流类主要用于处理数据的读取和写入操作。 输入流是从数据源读取数据的通道,InputStream是所有输入流的抽象基类,它提供了基本的读取方法,如`read()`用于读取单个字节,以及`read(byte[] b)`用于读取多个字节到字节数组中。当完成读取操作后,需要调用`close()`方法关闭输入流,释放资源。 输出流则是向目的地写入数据的通道,OutputStream同样是一个抽象基类,其提供了`write(int)`和`write(byte[] b)`方法来写入单个字节或字节数组。同样,写操作完成后也需要调用`close()`方法关闭输出流。`flush()`方法通常用于清空缓冲区,确保所有数据都被写入到输出流中,尽管OutputStream的`flush()`方法不做实际操作,但它的子类如BufferedOutputStream和PrintStream会覆盖此方法以实现实际的缓冲区清空功能。 在输入流的层次结构中,FileInputStream是基本的字节输入流,用于从文件中读取数据。过滤输入流(FilterInputStream)则是一种装饰器模式的应用,用于扩展InputStream的功能,例如DataInputStream可以读取基本类型数据,如int、float等,增强了InputStream的功能。 在题目中,练习要求从文件"in.txt"读取内容,并使用OutputStreamWriter以不同编码(UTF-8和UTF-16)写入到"out.txt"文件中。这涉及到字符编码的转换,Java的OutputStreamWriter类允许我们指定编码,如"UTF8"和"UTF16",以保证数据正确无误地在不同编码之间转换。 总结来说,这个练习涵盖了Java IO中的基本概念,包括流的分类、基本流类的使用,以及字符编码的处理,这些都是Java程序员必须掌握的重要技能。