Java文件操作:字节、字符与随机读写

需积分: 9 6 下载量 143 浏览量 更新于2024-09-14 收藏 43KB DOC 举报
"Java 文件读写操作" 在Java编程中,文件的读写是常见的任务,用于处理数据的存储和加载。本摘要将详细讲解如何以字节、字符和行的方式读取文件,以及如何进行随机访问和追加文件。主要涉及的类包括`FileInputStream`、`AppendToFile`、`RandomAccessFile`和`InputStreamReader`。 1. **以字节为单位读取文件** - `FileInputStream` 类是Java中用于读取二进制文件的基础类。它提供了以字节为单位读取文件的方法,适合读取非文本格式的数据,如图片、音频或视频文件。在示例代码中,首先创建一个`FileInputStream`实例,然后通过`read()`方法逐个或一次性读取多个字节。`read()`方法返回的是读取到的字节,如果已到达文件末尾,则返回-1。 2. **以字符为单位读取文件** - 当处理包含文本内容的文件时,通常使用字符流。`Reader` 是字符流的基类,`InputStreamReader` 是一个包装器类,它将字节流转换为字符流。在示例中,通过`InputStreamReader`包装`FileInputStream`,然后使用`read()`方法读取单个字符。这种方法适用于读取如文本文件、XML文件等含有字符编码的数据。 3. **以行为单位读取文件** - 在Java中,`BufferedReader` 类提供了一种以行为单位读取文件的高效方式。虽然在提供的代码中没有直接展示,但通常会用`BufferedReader`配合`FileReader`来实现。例如: ```java BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); ``` 4. **随机读取文件内容** - 对于需要在文件的任意位置读取或修改数据的情况,`RandomAccessFile` 类非常有用。它可以定位到文件的任意位置并进行读写操作。例如: ```java RandomAccessFile raf = new RandomAccessFile(fileName, "rw"); raf.seek(100); // 定位到文件的第100个字节 int byteRead = raf.read(); // 读取当前位置的一个字节 raf.write('A'); // 在当前位置写入字符 'A' raf.close(); ``` 5. **显示输入流中还剩的字节数** - `InputStream` 的 `available()` 方法可以用来检查输入流中剩余可读取的字节数。在示例中,`ReadFromFile.showAvailableBytes(in)` 可能会调用这个方法来显示尚未读取的字节数。 6. **追加文件** - 要向已存在的文件追加内容,可以使用 `FileOutputStream` 的构造函数,传入 `true` 作为第二个参数,这将打开文件以追加模式。然而,示例代码中提到的 `AppendToFile` 类并未给出详细实现,通常可以这样追加内容: ```java FileOutputStream fos = new FileOutputStream(fileName, true); fos.write("新内容".getBytes()); fos.close(); ``` 理解这些基本的文件读写方法对于Java开发至关重要,它们涵盖了大部分文件操作需求。在实际应用中,可能还需要处理异常、关闭流等细节,以确保程序的健壮性和资源的有效管理。