Java数据流应用详解:字节流与字符流实例

1 下载量 92 浏览量 更新于2024-09-03 收藏 94KB PDF 举报
"Java常用数据流应用实例解析,包括字节流和字符流,以及输入流、输出流和节点流、处理流的概念。通过代码示例详细解释了如何使用FileInputStream和FileOutputStream进行文件的读写操作。" 在Java编程中,数据流是用于在不同数据源之间传输数据的机制。本文主要关注Java中的常用数据流应用,并通过实例代码来帮助开发者理解和掌握相关知识。数据流根据其操作单位和流向被分为不同的类别: 1. 按操作单位分类: - 字节流(8bit):主要包括`InputStream`和`OutputStream`两大类,它们用于处理字节级别的数据,如二进制文件。在Java中,基础的字节输入流是`FileInputStream`,而字节输出流则是`FileOutputStream`。 2. 按数据流向分类: - 输入流:用于从数据源读取数据,例如从文件、网络或内存中。 - 输出流:用于将数据写入目的地,如写入文件、网络或内存。 3. 按角色分类: - 节点流:直接与数据源或目的地相连,如`FileInputStream`和`FileOutputStream`,它们是实际进行读写操作的流。 - 处理流:也称为装饰流,用于包装节点流,提供额外的功能,如缓冲、转换、过滤等。它们不直接与数据源或目的地交互,而是附加在其他流上,增强其功能。 在提供的代码示例中,我们看到了如何使用`FileInputStream`进行文件的读取和`FileOutputStream`进行文件的写入。`FileInputStream`的`read()`方法用于读取文件内容,返回值表示读取的字节数。当没有更多数据可读时,它会返回-1。通常我们需要循环调用`read()`方法,每次读取到的数据存储在一个字节数组中,然后通过`new String(b, 0, len)`将其转换为字符串并打印出来。 ```java public static void test1FileInputStream() { String path = "F:\\test.txt"; try { FileInputStream fs = new FileInputStream(path); byte[] b = new byte[30]; int len; while ((len = fs.read(b)) != -1) { System.out.println(new String(b, 0, len)); } fs.close(); } catch (FileNotFoundException e) { // 错误处理 } catch (IOException e) { // 错误处理 } } ``` 同样,`FileOutputStream`用于写入数据到文件。使用`write()`方法将字节数组写入文件,确保在操作完成后调用`close()`方法关闭流以释放资源。 ```java public static void testFileOutputStream() { String path = "F:\\test.txt"; try { FileOutputStream fos = new FileOutputStream(path); // 写入数据到文件的示例 fos.write("Hello, Java Data Stream!".getBytes()); fos.close(); } catch (FileNotFoundException e) { // 错误处理 } catch (IOException e) { // 错误处理 } } ``` 了解这些基础知识后,开发者可以进一步探索Java的处理流,如BufferedInputStream和BufferedOutputStream以实现缓冲,或者使用DataInputStream和DataOutputStream进行类型化数据的读写。此外,字符流(Reader和Writer)适用于处理基于字符的数据,如文本文件,它们提供了更高级别的抽象,适合处理Unicode字符。理解并熟练运用Java的数据流对于进行I/O操作至关重要,无论是简单的文件操作还是复杂的网络通信。