



Откройте файл в режиме записи, не обрезая его, найдите желаемое смещение и запишите желаемые данные. Просто будьте осторожны с текстовым / двоичным режимом.
Чтение и запись в середине файла так же просто, как использование RandomAccessFile в Java.
RandomAccessFile, несмотря на свое название, больше похож на InputStream и OutputStream и меньше на File. Это позволяет вам читать или искать через bytes в файле, а затем начинать запись в те байты, на которых вы хотите остановиться.
Как только вы откроете для себя этот класс, им будет очень легко пользоваться, если у вас есть базовые представления о обычном файловом вводе-выводе.
Небольшой пример:
public static void aMethod(){
RandomAccessFile f = new RandomAccessFile(new File("whereDidIPutTHatFile"), "rw");
long aPositionWhereIWantToGo = 99;
f.seek(aPositionWhereIWantToGo); // this basically reads n bytes in the file
f.write("Im in teh fil, writn bites".getBytes());
f.close();
}
что делать, если я не знаю позицию или у меня есть сотни файлов, в которые мне нужно вставить данные в их середину после определенного текста?
Если вы не знаете позицию, то вам нужно открыть файл и прочитать его, чтобы найти, куда нужно писать.
мой файл "file.txt" содержит текст типа "привет, как ты (новая строка) я в порядке, спасибо" теперь я хочу вставить "находятся" в середине текста, что мне нужно сделать? при этом имейте в виду, что мы работаем с большим количеством файлов
Обратите внимание, что RandomAccessFile перезапишет текущее содержимое файла из aPositionWhereIWantToGo
Я считаю, что лучше каждый раз создавать фрагменты файлов. И когда файл загрузится, соедините их вместе. Сейчас работаю над этим.
В руководстве, на которое есть ссылка, на самом деле не упоминается класс RandomAccessFile. Может, вместо этого: tutorials.jenkov.com/java-io/randomaccessfile.html