Строковое чтение файла в обратном порядке крайне сложно.
Это не слишком плохо, если у вас есть кодировка фиксированной ширины. Это возможно, если у вас есть кодировка переменной ширины, в которой вы можете обнаружить первый байт и т. Д. (Например, UTF-8). Это практически невозможно сделать эффективно, если кодирование имеет переменную ширину без разумного способа определения границ (или если оно использует, например, «смещение»).
У меня есть реализация на C # в другом вопросе , но потребуется немало усилий, чтобы перенести ее на Java.