还有别的插入方法吗
时间: 2024-02-29 10:51:38 浏览: 26
除了使用FileWriter和BufferedReader类,还可以使用Java中的RandomAccessFile类来实现在文件末尾插入数据。RandomAccessFile类可以随机访问文件,支持读写操作,可以在文件的任意位置进行读写操作。
具体步骤如下:
1. 创建一个RandomAccessFile对象,打开目标文件。
```
RandomAccessFile raf = new RandomAccessFile("目标文件.txt", "rw");
```
这里的第二个参数"rw"表示以读写方式打开文件。
2. 定位到文件的末尾。
```
raf.seek(raf.length()); // 定位到文件末尾
```
3. 创建一个BufferedReader对象,用于读取源文件中的数据。
```
BufferedReader br = new BufferedReader(new FileReader("源文件.txt"));
```
4. 逐行读取源文件的数据,并写入到目标文件中。
```
String line = null;
while ((line = br.readLine()) != null) {
raf.writeBytes(line);
raf.writeBytes("\n"); // 每行之间换行
}
```
5. 关闭文件流。
```
br.close();
raf.close();
```
完整代码如下:
```
import java.io.*;
public class InsertTxt {
public static void main(String[] args) throws IOException {
// 创建RandomAccessFile对象
RandomAccessFile raf = new RandomAccessFile("目标文件.txt", "rw");
// 定位到文件末尾
raf.seek(raf.length());
// 创建BufferedReader对象
BufferedReader br = new BufferedReader(new FileReader("源文件.txt"));
// 逐行读取源文件的数据,并写入到目标文件中
String line = null;
while ((line = br.readLine()) != null) {
raf.writeBytes(line);
raf.writeBytes("\n"); // 每行之间换行
}
// 关闭文件流
br.close();
raf.close();
}
}
```
需要注意的是,RandomAccessFile类的writeBytes方法是按照字节写入数据的,需要将字符串转换为字节数组再写入文件。如果目标文件不存在,RandomAccessFile会自动创建该文件。如果源文件不存在,BufferedReader会抛出FileNotFoundException异常。