Нет, нет способа сделать это БЕЗОПАСНО в Java.
Ни одна реализация файловой системы ни в одной основной операционной системе не поддерживает подобные вещи, и вы не найдете эту функцию поддерживаемой ни в одном из основных языков программирования.
Реальные файловые системы реализованы на устройствах, которые хранят данные в виде «блоков» фиксированного размера. Невозможно реализовать модель файловой системы, в которой вы можете вставлять байты в середину файла без существенного замедления файлового ввода-вывода, траты дискового пространства или обоих.
Решения, предусматривающие перезапись файла на месте, изначально небезопасны. Если ваше приложение будет убито или питание прекратится в процессе подготовки / перезаписи, вы, скорее всего, потеряете данные. Я бы НЕ рекомендовал использовать этот подход на практике.
Использовать временный файл. Это безопаснее.