randomaccessfile 删除一行
时间: 2023-05-01 10:04:47 浏览: 220
可以使用 Java 的 RandomAccessFile 类的 seek() 方法定位到要删除的行并将后面的内容覆盖前面的内容来实现删除一行。具体方法如下:
1. 先将文件内容读入到一个 ArrayList<String> 中;
2. 定位到要删除的行并从 ArrayList<String> 中删除该行;
3. 使用 RandomAccessFile 的 seek() 方法定位到文件的起始位置;
4. 遍历 ArrayList<String> 中的所有行,并将每行内容写回到文件中;
5. 关闭 RandomAccessFile。
示例代码如下:
import java.io.*;
import java.util.*;
public class DeleteLine {
public static void main(String[] args) {
String filename = "test.txt";
int lineToDelete = 2; // 要删除的行号,从 0 开始计数
try {
// 读入文件内容到 ArrayList
ArrayList<String> lines = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(filename));
String line;
while ((line = reader.readLine()) != null) {
lines.add(line);
}
reader.close();
// 删除指定行
lines.remove(lineToDelete);
// 写回文件
RandomAccessFile file = new RandomAccessFile(filename, "rw");
file.setLength(0);
file.seek(0);
for (String s : lines) {
file.write((s + "\n").getBytes());
}
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}