我打算使用Java擦除文本文件中的最后一行;但是,下面的代码将删除所有内容。
public void eraseLast() { while(reader.hasNextLine()) { reader.nextLine(); if (!reader.hasNextLine()) { try { fWriter = new FileWriter("config/lastWindow.txt"); writer = new BufferedWriter(fWriter); writer.write(""); writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
如果要从文件中删除最后一行而不创建新文件,则可以执行以下操作:
RandomAccessFile f = new RandomAccessFile(fileName, "rw"); long length = f.length() - 1; do { length -= 1; f.seek(length); byte b = f.readByte(); } while(b != 10); f.setLength(length+1); f.close();
从倒数第二个字节开始,查找换行符,然后继续向后搜索,直到找到一个。然后在该换行符之后截断该文件。
如果最后一个字符是换行符(即最后一行的末尾),则从第二个最后一个字节而不是最后一个字节开始。