Чтение последнего байта из файла и усечение до размера - PullRequest
6 голосов
/ 21 июля 2010

У меня есть огромный набор файлов, ко всем из которых (должен быть) добавляется символ стража (1 байт), добавляемый в конец файла. Как я могу прочитать самый последний байт (чтобы убедиться, что это символ) и обрезать его до размера (т.е. удалить символ)?

Я знаю, что могу прочитать все и записать все обратно, минус последний символ, но должен быть способ добраться до определенного байта, не так ли?

1 Ответ

12 голосов
/ 21 июля 2010

Вы можете использовать класс RandomAccessFile, чтобы найти конец файла, прочитать его и затем обрезать файл, используя setLength().

Обновление: Вот код:

File target = new File("/path/to/file");
RandomAccessFile file = new RandomAccessFile(target,"rwd");
file.seek(target.length()-1); // Set the pointer to the end of the file
char c = file.readChar();
if(c == '|') // Change the pipe character to whatever your sentinel character is
{
     file.setLength(target.length()-1); // Strip off the last _byte_, not the last character
}

Примечание. Я не проверял этот код, не обрабатывал ошибки и т. Д.

Если файл находится в любом не 8-битном наборе символов, target.length()-1 необходимо будет скорректировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...