Java IO流深入解析:Reader与Writer的使用技巧

5星 · 超过95%的资源 需积分: 43 14 下载量 46 浏览量 更新于2024-09-16 收藏 3KB TXT 举报
"Java IO流 reader和writer的方法使用" 在Java中,IO(Input/Output)流是处理数据输入和输出的重要工具。本篇将详细讲解Java中的`Reader`和`Writer`类及其常用方法。 `Reader`和`Writer`是Java IO流中的字符流,它们分别用于读取和写入字符数据。`Reader`是所有字符输入流的抽象基类,而`Writer`是所有字符输出流的抽象基类。它们提供了许多方法来处理字符数据,例如读取单个字符、读取整行、写入字符等。 在给定的代码示例中,我们首先看到如何使用`FileReader`和`BufferedReader`进行文件读取: ```java File file = new File("f:\\genius.txt"); if (!file.exists()) { System.out.println("文件不存在"); } try { FileReader fr = new FileReader(file); BufferedReader br = new BufferedReader(fr); // 逐行读取文本文件 String str; while ((str = br.readLine()) != null) { System.out.println(str); } // 关闭流 br.close(); fr.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } ``` 在这个例子中,我们首先创建一个`File`对象,然后检查文件是否存在。如果存在,我们创建一个`FileReader`实例来打开文件,接着创建一个`BufferedReader`,它对`FileReader`进行包装,提供更高效的数据读取。`BufferedReader`的`readLine()`方法用于按行读取文本,直到文件结束。最后,我们需要关闭所有的流,以释放系统资源。 接着,代码展示了如何使用`FileWriter`和`BufferedWriter`进行文件写入: ```java File file = new File("f:\\genius.txt"); // 转义斜杠 \ 为反斜杠 \\ if (!file.exists()) { // 如果文件不存在,尝试创建 try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } try { FileWriter fw = new FileWriter(file); BufferedWriter bw = new BufferedWriter(fw); // 写入数据 String[] str = {"Java", "C"}; for (String s : str) { bw.write(s); bw.newLine(); // 添加换行符 } // 关闭流 bw.close(); fw.close(); } catch (IOException e) { e.printStackTrace(); } ``` 这里,我们同样创建一个`File`对象,如果文件不存在则创建新的文件。然后使用`FileWriter`实例打开文件,再用`BufferedWriter`包装以提高效率。`BufferedWriter`的`write()`方法用于写入单个字符串,`newLine()`方法用于添加一行。最后,记得关闭流。 `Reader`和`Writer`的其他常用方法包括: - `read()`: 读取单个字符。 - `skip(n)`: 跳过指定数量的字符。 - `ready()`: 检查是否可以立即读取一个字符,而不阻塞。 - `mark(int readlimit)`: 设置标记,允许稍后返回到当前位置。 - `reset()`: 回到之前设置的标记位置。 - `close()`: 关闭流并释放与之关联的任何系统资源。 `Writer`类中还有: - `append(char c)`: 追加单个字符。 - `append(CharSequence csq)`: 追加一个字符序列。 - `flush()`: 刷新流,确保所有已缓冲的输出都被写出。 这些方法是Java IO流处理的基础,通过它们可以实现对文件、网络等不同数据源的字符数据操作。理解并熟练运用这些方法对于Java开发来说至关重要。