Я хочу заменить первые x байтов файла на y байтов. То есть x и y не имеют такой же длины. Я попробовал копирование в новый файл. Его работа, но медленная для больших файлов. Я знаю, что для точной длины замены может использоваться RAndomAccessfile. Но я не могу использовать его для своей цели.
Большое спасибо за вашу помощь.
Если x
и y
не совпадают, у вас нет выбора, кроме как записать y
а затем записать оставшуюся часть файла, даже если все, что вы делаете, - это перемещение остальной части файла на y - x
байты.
Если вам отчаянно нужно, чтобы это было быстро, тогда вы можете создать собственный интерфейс произвольного доступа, подкрепленный набором неизменяемых файлов + неизменяемых списков изменений. Если ваше приложение имеет некоторое свободное время, оно может объединить последнюю неизменяемую точку фиксации + список изменений в новый файл в фоновом режиме.
Список изменений может быть таким же простым, как
Точка фиксации - это просто целый файл.