Последнюю строчку можно удалить методом, описанным в посте здесь . Но, как вы, возможно, знаете, EOL (разрыв строки) составляет 2 символа \r\n
в windows системах CRLF
и 1 символ в macOS / linux systesm \n
LF
, поэтому вам нужно удалить последние 2 символа, если ваш файл windows отформатирован:
try {
FileChannel open = FileChannel.open(Paths.get("file.tx"), StandardOpenOption.WRITE);
open.truncate(open.size() - 2); //the 2 characters I was describing above
} catch (IOException e) {
System.out.println("An IO error occurred.");
e.printStackTrace();
}
Имейте в виду, что каждый раз, когда вы запускаете этот код, последние 2 символа будут удаляться, поэтому было бы целесообразно реализовать убедитесь, что EOL - это последние символы вашего файла. Вы можете сделать это, прочитав последние символы:
FileChannel read = FileChannel.open(Paths.get("file.txt"), StandardOpenOption.READ);
ByteBuffer buffer = ByteBuffer.allocate(4);
read.read(buffer, read.size() - 2);
if(new String(buffer.array()).contains("\r\n")) {
FileChannel write = FileChannel.open(Paths.get("file.txt"), StandardOpenOption.WRITE);
write.truncate(write.size()-2);
}