正如其他人所指出的那样,如果你的程序在中途崩溃的风险最小,你可能最好使用临时文件:
public static void removeNthLine(String f, int toRemove) throws IOException {
File tmp = File.createTempFile("tmp", "");
BufferedReader br = new BufferedReader(new FileReader(f));
BufferedWriter bw = new BufferedWriter(new FileWriter(tmp));
for (int i = 0; i < toRemove; i++)
bw.write(String.format("%s%n", br.readLine()));
br.readLine();
String l;
while (null != (l = br.readLine()))
bw.write(String.format("%s%n", l));
br.close();
bw.close();
File oldFile = new File(f);
if (oldFile.delete())
tmp.renameTo(oldFile);
}
(注意对编码,换行符和异常处理的草率处理.)
但是,我不喜欢回答“我不会告诉你怎么做,因为你不应该这样做.”. (例如,在某些其他情况下,您可能正在使用大于硬盘驱动器一半的文件!)所以这里是:
你需要使用RandomAccessFile.使用此类,您可以使用相同的