Мне всегда интересно, как катится файл в журналах.Реализация исполняемого файла
Как можно даже начать создавать класс записи файлов на любом языке, чтобы гарантировать, что размер файла не будет превышен.
Единственное возможное решения я могу думать так:
write method:
size = file size + size of string to write
if(size > limit)
close the file writer
open file reader
read the file
close file reader
open file writer (clears the whole file)
remove the size from the beginning to accommodate for new string to write
write the new truncated string
write the string we received
Это кажется ужасной реализацией, но я не могу придумать ничего лучшего.
В частности, я хотел бы увидеть решение в java.
EDIT: Удалив размер с начала, допустим, у меня есть 20-байтовая строка (это предел), я хочу написать еще 3 байтовую строку, поэтому я удаляю 3 байта с начала и оставляю конец 17 байт, и добавив новую строку, у меня есть 20 байтов.
В рамках ведения журнала это немного сложнее, потому что у них разные политики для выполнения опрокидывания. Загрузите исходный код, например, для 'logback' и посмотрите классы' RollingFileAppender' и 'FixedWindowRollingPolicy', в частности метод' rollover() '. –
Спасибо, это интересно, но что, если я хочу создать что-то, что просто расширяет PrintWriter, и я хочу, чтобы это было как можно проще и элегантнее? – Quillion
То, что вы опубликовали, имеет смысл, но что вы подразумеваете под _размерным размером с начала?? –