编写一个带缓存的对文本文件进行读写操作的java程序。 (1)可以读取不同位置的信息 (2)可以把数据写入到不同的位置
时间: 2024-02-06 18:09:45 浏览: 44
以下是一个简单的带缓存的对文本文件进行读写操作的Java程序,可以实现读取不同位置的信息和将数据写入到不同的位置。程序使用了Java的缓存字符流BufferedReader和BufferedWriter:
```java
import java.io.*;
public class FileReadWriteWithCache {
public static void main(String[] args) {
String fileName = "test.txt";
int bufferSize = 1024; // 设定缓存大小为1024字节
try {
// 读取文件
FileReader fileReader = new FileReader(fileName);
BufferedReader bufferedReader = new BufferedReader(fileReader, bufferSize);
String line;
while ((line = bufferedReader.readLine()) != null) {
System.out.println(line);
}
bufferedReader.close();
// 写入文件
FileWriter fileWriter = new FileWriter(fileName, true); // 追加模式
BufferedWriter bufferedWriter = new BufferedWriter(fileWriter, bufferSize);
String data = "Hello, World!";
int offset = 10; // 写入到第10个字节后面
bufferedWriter.write(data, offset, data.length());
bufferedWriter.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在上述程序中,我们首先设定了缓存大小为1024字节,然后使用FileReader和FileWriter分别创建了输入和输出的字符流对象。接着,我们使用BufferedReader和BufferedWriter分别创建了带缓存的输入和输出字符流对象,并且将其绑定到文件的字符流对象上。
在读取文件时,我们使用了BufferedReader的readLine()方法逐行读取文件内容,并将其打印到控制台上。在写入文件时,我们使用了BufferedWriter的write()方法将给定的字符串数据写入到文件中,并且指定了写入的偏移量(即从第10个字节后面开始写入),以实现将数据写入到不同的位置。最后,我们关闭了所有的字符流对象。
需要注意的是,由于缓存字符流是带缓存的,因此我们在使用完缓存字符流后需要调用close()方法来刷新缓存并关闭流,以确保所有数据都被写入到文件中。