JAVA 文件读写操作
在 JDK 1.0 中,通常是用 InputStream & OutputStream 这两个基类来进行读写操作的。
InputStream 中的 FileInputStream 类似一个文件句柄,通过它来对文件进行操作
### JAVA 文件读写操作
#### 一、使用 InputStream 和 OutputStream 进行文件读写
在 Java 开发过程中,文件的读写操作是非常基础且重要的功能之一。从 JDK 1.0 开始,Java 提供了两种主要的方式来处理文件读写:`InputStream` 和 `OutputStream`。这两种方式适用于二进制数据的读取与写入。
- **InputStream** 作为读取数据的基础类,其派生类 `FileInputStream` 被用来读取文件中的数据。
- **OutputStream** 作为写入数据的基础类,其派生类 `FileOutputStream` 用于将数据写入到文件中。
##### FileInputStream 读取文件示例
```java
// 创建一个文件输入流对象
FileInputStream fstream = new FileInputStream(args[0]);
// 创建一个数据输入流对象
DataInputStream in = new DataInputStream(fstream);
String str;
// 逐行读取文件内容
while ((str = in.readLine()) != null) {
System.out.println(str);
}
// 关闭输入流
in.close();
```
在这个例子中,我们首先创建了一个 `FileInputStream` 对象 `fstream` 来打开指定文件。接着使用 `DataInputStream` 来更方便地读取文件中的文本数据。通过循环调用 `readLine()` 方法来读取每一行内容,并打印出来。最后记得关闭输入流以释放资源。
##### FileOutputStream 写入文件示例
```java
// 创建一个文件输出流对象
FileOutputStream out = new FileOutputStream("myfile.txt");
// 创建一个打印流对象
PrintStream p = new PrintStream(out);
String str;
// 写入字符串到文件
p.println("Hello World!");
// 关闭输出流
p.close();
```
在这个例子中,我们创建了一个 `FileOutputStream` 对象 `out` 并将其传递给 `PrintStream` 对象 `p`。这样就可以像往控制台输出一样向文件中写入数据。使用 `println` 方法来写入一行字符串,最后关闭输出流以确保所有数据都被正确保存到文件中。
#### 二、使用 Reader 和 Writer 进行文件读写
从 JDK 1.1 开始,Java 引入了新的字符流 API,即 `Reader` 和 `Writer`,它们是专门用于处理文本数据的。相比于 `InputStream` 和 `OutputStream`,这些类提供了更加高效且易于使用的接口。
- **Reader** 作为字符输入流的基础类,其派生类 `FileReader` 用于读取文件中的字符数据。
- **Writer** 作为字符输出流的基础类,其派生类 `FileWriter` 用于将字符数据写入到文件中。
##### FileReader 读取文件示例
```java
// 创建一个文件读取器对象
FileReader fr = new FileReader("mydata.txt");
// 创建一个缓冲读取器对象
BufferedReader br = new BufferedReader(fr);
String line;
// 逐行读取文件内容
while ((line = br.readLine()) != null) {
System.out.println(line);
}
// 关闭读取器
br.close();
fr.close();
```
在这个例子中,我们使用 `FileReader` 来打开文件,并使用 `BufferedReader` 来提高读取效率。通过循环调用 `readLine()` 方法来读取每一行内容,并打印出来。最后关闭读取器以释放资源。
##### FileWriter 写入文件示例
```java
// 创建一个文件写入器对象
FileWriter fw = new FileWriter("mydata.txt");
// 创建一个打印写入器对象
PrintWriter out = new PrintWriter(fw);
// 写入字符串到文件
out.println("Hello World!");
// 关闭写入器
out.close();
fw.close();
```
在这个例子中,我们创建了一个 `FileWriter` 对象 `fw` 并将其传递给 `PrintWriter` 对象 `out`。使用 `println` 方法来写入一行字符串,最后关闭写入器以确保所有数据都被正确保存到文件中。
#### 三、总结
通过以上的介绍和示例代码,我们可以看到 Java 在文件读写方面提供了多种选择。对于二进制数据的操作,推荐使用 `InputStream` 和 `OutputStream`;而对于文本数据的操作,则建议使用 `Reader` 和 `Writer`。选择合适的 API 可以让代码更加简洁高效。此外,在实际开发中还需要注意异常处理以及资源释放等问题,以避免潜在的程序错误或资源泄漏。