Java IO流详解:文件读写实例与分类

2 下载量 35 浏览量 更新于2024-08-31 收藏 111KB PDF 举报
"Java IO流文件的读写具体实例,涉及IO流的分类及实例代码" 在Java编程中,IO流(Input/Output Stream)是处理数据传输的关键工具,广泛应用于文件读写、网络通信等领域。Java IO流分为多种类型,可以根据数据对象、流向、数据格式和包装过程进行分类。 1. 根据流的数据对象分类: - 高端流(High-Level Streams):处理的是字符数据,如`InputStreamReader`和`OutputStreamWriter`,它们通常与Java的`Charset`类配合,用于处理不同编码的字符流。 - 低端流(Low-Level Streams):处理的是字节数据,如`InputStream`和`OutputStream`,适用于处理二进制数据,如图片、音频等。 2. 根据数据的流向分类: - 输出流(Output Streams):用于将数据从程序(内存)写入到外部设备,如硬盘、网络等,如`FileOutputStream`和`PrintStream`。 - 输入流(Input Streams):用于从外部设备读取数据到程序(内存),如`FileInputStream`。 3. 根据数据的格式分类: - 字节流(Byte Streams):处理二进制数据,包括所有低端流,如`InputStream`和`OutputStream`,以及某些高端流,如`ObjectInputStream`和`ObjectOutputStream`。 - 字符流(Character Streams):处理文本数据,包括所有高端流,如`Reader`和`Writer`家族。 4. 根据流数据的包装过程分类: - 原始流(Raw Streams):不依赖其他流直接创建的流,如`FileInputStream`和`FileOutputStream`。 - 包装流(Wrapper Streams):在创建时需要传递另一个流作为参数,如`BufferedReader`和`BufferedWriter`,它们提供缓冲和其他高级功能。 以下是一个按字节读取文件的示例代码片段: ```java public class ReadFromFile { public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { in = new FileInputStream(file); int data; while ((data = in.read()) != -1) { System.out.print((char) data); } } catch (IOException e) { e.printStackTrace(); } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } } ``` 这段代码使用`FileInputStream`作为输入流,按字节读取文件内容,并逐个打印出来。注意,读取文件完成后要记得关闭流,防止资源泄漏。 通过理解这些基本概念和实例,你可以更有效地在Java项目中使用IO流进行文件的读写操作。无论是处理二进制数据还是文本数据,选择合适的流类型和使用正确的读写方法,都是实现高效文件操作的关键。