android: заменить x байтов в начале файла на y байтов

1

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

Большое спасибо за вашу помощь.

Теги:
file
replace
random-access

2 ответа

3
Лучший ответ

Если x и y не совпадают, у вас нет выбора, кроме как записать y а затем записать оставшуюся часть файла, даже если все, что вы делаете, - это перемещение остальной части файла на y - x байты.

  • 0
    Я видел FileChannel. Разве это не вариант? Есть ли причина, по которой это не рекомендуется
2

Если вам отчаянно нужно, чтобы это было быстро, тогда вы можете создать собственный интерфейс произвольного доступа, подкрепленный набором неизменяемых файлов + неизменяемых списков изменений. Если ваше приложение имеет некоторое свободное время, оно может объединить последнюю неизменяемую точку фиксации + список изменений в новый файл в фоновом режиме.

Список изменений может быть таким же простым, как

  • путь предыдущего файла списка изменений/фиксации
  • смещение и длина, подлежащие замене
  • данные замены

Точка фиксации - это просто целый файл.

  • 0
    Это хорошая идея. но в моем приложении я не буду заранее знать, какие файлы нужно будет изменить. Я хочу изменить это на лету. большое спасибо
  • 0
    @preetha Это можно применить на лету.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню