你好,我按照你的要求写的如下代码,并给足了注释,可以直接运行
简单说下原理:先获得要删除的行号。按行读取原文件内容,并按行写到新的临时文件;如果遇到要删的行,就不写。最后删除原文件,临时文件改名。
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class test {
public static void main(String[] args) throws IOException {
// 获得输入的要删除的行号,如果是多个,可以用循环
Scanner scanner = new Scanner(System.in);
int rowToDel = scanner.nextInt();
scanner.close();
// 边读内容边写到临时文件,如果行号是要删除的就不写
File file = new File("d:\\1.txt");
File temp = new File("d:\\temp.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(
new FileInputStream(file)));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(temp)));
String str;
int rowIndex = 0;
while (null != (str = reader.readLine())) {
if (rowIndex != rowToDel) {
writer.write(str + "\r\n");
}
rowIndex++;
}
reader.close();
writer.close();
file.delete();// 删除原文件
temp.renameTo(file);// 临时文件改名成原文件名称
}
}
readLine方法可以蛮足你的要求。。
1.每行先读进来...
2.目标行号读了不保存
2.写出文件