Java IO流深入解析:Reader与Writer的使用技巧
5星 · 超过95%的资源 需积分: 43 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开发来说至关重要。
2007-04-19 上传
2011-09-19 上传
2022-09-20 上传
2020-08-31 上传
2022-07-25 上传
2012-06-01 上传
2009-03-12 上传
2014-12-24 上传
2023-07-02 上传
小贝精英
- 粉丝: 1
- 资源: 4
最新资源
- Canteen-Automation-App:一个食堂自动化应用程序,用于使手动食堂管理系统自动化
- zxing-cpp:ZXing的C ++端口
- Windows server2008R2 补丁kb4474419-v3-x64
- CognitiveRocket:此存储库主要用于Bot,Power Platform,Dynamics 365,Cognitive Services和ML.NET的研发。
- pouchdb-all-dbs:PouchDB的allDbs()插件
- FromJson
- Dahouet-Repository
- Cyclist
- endlessArrayPromise
- GEO82_5_HE
- workberch-tolopogy:由 Taverna Workbench 上的工作流文件创建的动态 Apache Storm 拓扑
- Surface-Crack-Detection-CNN:使用CNN对Kaggle上可用的图像数据进行表面裂纹检测。 该存储库将在Streamlit中同时具有“模型实现”和“ Web应用程序”,用于检测裂缝
- AppiumTest
- COMP397-W2021-Lesson8a
- 使用TensorFlow.js进行AI聊天机器人:训练Trivia Expert AI
- bdmap