文件读写是对于一个程序来说非常基本的操作之一。在Java中,可以使用标准的I/O流来进行文件读写操作。在这篇文章中,我们将介绍Java中如何进行文件读写操作,包括使用的类、方法和样例代码。
**File类**
在Java中,文件的处理都是通过java.io包中的类来完成的。File类是Java中用于操作文件和目录路径的类,它可以用来表示文件或目录的路径。File类中提供了一系列的方法可以查询文件或目录的属性或进行文件或目录的操作,比如创建、删除、重命名等。
我们可以使用File类的构造函数来创建File对象。其中传递的参数是文件或目录的路径。通过File对象,我们可以打开一个文件或目录,获取文件或目录的信息或进行文件或目录的操作。
创建一个File对象的方式有以下三种:
1. 通过文件或目录的路径名创建;
2. 通过文件或目录的父路径和文件或目录名创建;
3. 通过另一个File对象创建。
```java
// 通过路径名创建File对象
File file = new File("D:\\temp\\file.txt");
// 通过父路径和文件名创建File对象
File file = new File("D:\\temp", "file.txt");
// 通过另一个File对象创建File对象
File parentFile = new File("D:\\temp");
File file = new File(parentFile, "file.txt");
```
**标准I/O流**
Java标准库提供了三种类型的I/O流,分别是字节流、字符流和对象流。
* 字节流:InputStream和OutputStream
* 字符流:Reader和Writer
* 对象流:ObjectInputStream和ObjectOutputStream
区别在于,字节流是对二进制数据进行操作,适用于图片、音频等。而字符流则是对文本数据进行操作,比如读写文本文件。对象流则是用于读写Java对象。
在进行文件读写操作时,我们需要用到字节流或字符流。而在使用时,我们需要明确文件的类型,以选择正确的流对象。
**文件读操作**
下面我们将先介绍如何使用Java对文本文件进行读取操作,随后再介绍如何使用字节流读取文件。
Java中读取文本文件的两种方式:
1. 使用字符流
Java提供了Reader和Writer两种字符流用来读写文本文件。其中,FileReader和FileWriter是Reader和Writer的子类,可以直接用来读写文件,如下所示:
```java
File file = new File("D:\\temp\\file.txt");
try (FileReader reader = new FileReader(file)) {
char[] data = new char[1024];
int len = reader.read(data);
while (len != -1) {
System.out.println(new String(data, 0, len));
len = reader.read(data);
}
} catch (IOException e) {
e.printStackTrace();
}
```
例子中,我们通过FileReader打开文本文件,并通过read()方法从文件中读取数据。我们使用一个char[]数组来存储读取到的数据,并将读取到的字符数组转换为字符串输出。
2. 使用缓存字符流
由于Java提供的FileReader和FileWriter是无法缓存数据的,为了提高读写效率,我们可以使用BufferedReader和BufferedWriter来读写文本文件。
BufferedReader是Reader的子类,可以将其封装在FileReader之上,使用其提供的缓冲能力快速读取文本文件,如下所示:
```java
File file = new File("D:\\temp\\file.txt");
try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
```
BufferedWriter是Writer的子类,也可以将其封装在FileWriter之上,使用其提供的缓冲能力快速写入文本文件。
下面是使用缓存流写入数据的例子:
```java
File file = new File("D:\\temp\\file.txt");
try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
writer.write("hello\n");
writer.write("world\n");
} catch (IOException e) {
e.printStackTrace();
}
```
使用BufferedWriter写入数据时,数据首先被缓存,只有在缓存区满或者缓冲流关闭时才被写入文件。
接下来,我们将介绍如何使用字节流来读取文件。
在Java中,读写二进制数据可以使用InputStream和OutputStream。下面介绍如何使用FileInputStream和FileOutputStream来读取文件。
```java
File file = new File("D:\\temp\\file.txt");
try (FileInputStream fis = new FileInputStream(file)) {
byte[] data = new byte[1024];
int len = fis.read(data);
while (len != -1) {
System.out.println(new String(data, 0, len));
len = fis.read(data);
}
} catch (IOException e) {
e.printStackTrace();
}
```
这个例子中,我们通过FileInputStream打开一个二进制文件,并通过read()方法从文件中读取数据。我们使用一个byte[]数组来存储读取到的数据,并将读取到的字节数组转换为字符串输出。
现在您已经了解了如何在Java中使用I/O流来进行文件读写操作了。
**文件写操作**
在Java中,使用FileOutputStream进行写操作时,可以向打开的文件流中写入byte数组。
下面是向文件中写入字符串的例子:
```java
File file = new File("D:\\temp\\file.txt");
try (FileOutputStream fos = new FileOutputStream(file)) {
String data = "hello world";
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
```
在这个例子中,我们通过FileOutputStream打开一个文件,并使用write()方法向文件中写入字符串。我们也可以使用BufferedOutputStream进行缓存操作。
```java
File file = new File("D:\\temp\\file.txt");
try (BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(file))) {
String data = "hello world";
bos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
```
在Java中,使用FileWriter进行写操作时,可以向打开的文件流中写入字符串。
下面是向文件中写入字符串的例子:
```java
File file = new File("D:\\temp\\file.txt");
try (FileWriter fw = new FileWriter(file)) {
String data = "hello world";
fw.write(data);
} catch (IOException e) {
e.printStackTrace();
}
```
同样地,我们也可以使用BufferedWriter进行缓存操作。
```java
File file = new File("D:\\temp\\file.txt");
try (BufferedWriter bw = new BufferedWriter(new FileWriter(file))) {
String data = "hello world";
bw.write(data);
} catch (IOException e) {
e.printStackTrace();
}
```
**总结**
在这篇文章中,我们介绍了Java中文件读写操作的一些基本概念和方法。我们了解了如何使用File类创建文件对象,以及如何使用I/O流进行文件读写操作。在这里,我们推荐使用缓冲流来进行文件的读写操作,可以提高操作的效率。
在实际应用中,根据需要进行选择使用字符流或字节流读写文件。如果需要读写文本文件,建议使用字符流进行操作。如果需要读写二进制文件,建议使用字节流进行操作。
最后要注意,读写文件时,一定要关闭资源,可以使用try-with-resource语法来处理,这是一个非常好的习惯。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复