Я не уверен, что NotePad ++ на самом деле реализует произвольный доступ, но я думаю, что это путь, особенно со средством просмотра файлов журнала, которое подразумевает, что он будет только для чтения.
Поскольку ваша программа просмотра журналов будет доступна только для чтения, вы можете использовать только для чтения произвольный доступ файл с отображением в памяти "stream". В Java это FileChannel .
Затем просто прыгайте в файл по мере необходимости и визуализируйте на экране просто окно прокрутки данных.
Одним из преимуществ FileChannel является то, что одновременные потоки могут открывать файл, и чтение не влияет на текущий указатель файла. Поэтому, если вы добавляете файл журнала в другой поток, это не будет затронуто.
Еще одним преимуществом является то, что вы можете вызвать метод размера FileChannel, чтобы получить размер файла в любой момент.
Проблема с отображением памяти непосредственно в файл произвольного доступа, который допускают некоторые текстовые редакторы (например, HxD и UltraEdit), заключается в том, что любые изменения напрямую влияют на файл. Следовательно, изменения происходят немедленно (за исключением кэширования записи), чего обычно не хотят пользователи. Вместо этого пользователи обычно не хотят вносить свои изменения, пока они не нажмут кнопку «Сохранить». Однако, поскольку это просто зритель, у вас нет таких проблем.