8、 使用RandomAccessFile类,循环向文件B.txt中输入10个double类型的数据,然后在第4个数据后插入一个整数,最后将该文件的内容全部读取出来。(这些数据可以通过控制台输入,也可以自己直接指定)
时间: 2024-02-22 07:00:03 浏览: 112
使用RandomAccessFile流将一个文本文件读出,并导致写入到另一个文件当中。
3星 · 编辑精心推荐
下面是使用 RandomAccessFile 类来实现该需求的 Java 代码:
```java
import java.io.*;
public class RandomAccessFileDemo {
public static void main(String[] args) {
String fileName = "B.txt";
double[] data = new double[10];
int pos = 3; // 插入整数的位置
int value = 100; // 插入的整数值
// 输入10个double类型的数据
try (RandomAccessFile raf = new RandomAccessFile(fileName, "rw")) {
for (int i = 0; i < data.length; i++) {
System.out.print("请输入第" + (i+1) + "个double类型的数据:");
data[i] = Double.parseDouble(System.console().readLine());
raf.writeDouble(data[i]);
}
// 在第4个数据后插入一个整数
long posByte = pos * 8; // 一个 double 类型占8个字节
raf.seek(posByte); // 定位到插入位置
byte[] buffer = new byte[(int)(raf.length() - posByte)]; // 读取插入位置之后的字节
raf.read(buffer);
raf.seek(posByte); // 再次定位到插入位置
raf.writeInt(value); // 写入整数值
raf.write(buffer); // 写入插入位置之后的字节
// 读取文件内容
raf.seek(0); // 定位到文件开头
System.out.println("文件B.txt的内容为:");
while (raf.getFilePointer() < raf.length()) {
System.out.println(raf.readDouble());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
该代码中,我们先定义了文件名、输入的数据、插入整数的位置和插入的整数值。然后使用 RandomAccessFile 类以读写方式打开文件,并循环输入 10 个 double 类型的数据,将其写入文件中。
接着,在第 4 个数据后插入整数,我们先使用 `seek()` 方法将文件指针定位到插入位置,然后读取插入位置之后的字节,并使用 `writeInt()` 方法写入整数值和 `write()` 方法写入插入位置之后的字节。
最后,我们再次使用 `seek()` 方法将文件指针定位到文件开头,并使用 `getFilePointer()` 方法获取当前文件指针的位置,如果小于文件长度,就读取一个 double 类型的数据并输出,直到文件读取完毕。
阅读全文