Вставка текста в существующий файл через Java

Полный ответ (с углового 1.4). Вам нужно включить зависимость $ httpParamSerializer

var res = $resource(serverUrl + 'Token', { }, {
                save: { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
            });

            res.save({ }, $httpParamSerializer({ param1: 'sdsd', param2: 'sdsd' }), function (response) {

            }, function (error) { 

            });
24
задан Benedikt Waldvogel 5 December 2008 в 21:45
поделиться

5 ответов

Ну, нет, я не полагаю, что существует способ постараться не перезаписывать существующее содержание с единственным, стандартным Java вызов API IO.

, Если файлы не являются слишком большими, просто считайте весь файл в ArrayList (запись на строку) и или перепишите записи или вставьте новые записи для новых строк.

Тогда перезаписывают существующий файл с новым содержанием, или перемещают существующий файл в резервное копирование и пишут новый файл.

В зависимости от того, насколько сложный редактирования должны быть, Ваша структура данных, возможно, должна измениться.

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

11
ответ дан Ken Gentle 28 November 2019 в 21:19
поделиться

Я не знаю, существует ли удобный способ сделать это прямо иначе, чем

  • , читает начало файла и пишут, что это для предназначения
  • пишет новый текст, чтобы предназначаться
  • остальная часть чтения файла и записать его для предназначения.

О цели: можно создать новое содержание файла в памяти и затем перезаписать старое содержание файла, если обработанные файлы не являются настолько большими. Или можно записать результат во временный файл.

вещь, вероятно, было бы самым легким сделать с потоками, RandomAccessFile, кажется, не предназначен для вставки в середине (afaik). Проверьте учебное руководство , если Вам нужно.

2
ответ дан Touko 28 November 2019 в 21:19
поделиться

Я полагаю, что единственный способ вставить текст в файл существующего текста состоит в том, чтобы считать исходный файл и записать содержание во временном файле с новым вставленным текстом. Тогда сотрите исходный файл и переименуйте временный файл к настоящему имени.

Этот пример фокусируется на вставленном одна строка в существующий файл, но все еще возможно, использования Вам.

2
ответ дан Brendan Cashman 28 November 2019 в 21:19
поделиться

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

Это работает на C. Никогда не пробовал это на Java.

Другой способ, который я только что придумал сделать то же самое, но с произвольным доступом к файлам.

  • Искать до конца - 1 МБ
  • Прочитать 1 МБ
  • Записать это в исходное положение + размер промежутка.
  • Повторить для каждого предыдущего 1 МБ, двигаясь к началу файла.
  • Остановить, когда вы достигнете желаемой позиции зазора.

Используйте больший размер буфера для повышения производительности.

4
ответ дан 28 November 2019 в 21:19
поделиться

Если это текстовый файл ,,,, Прочтите существующий файл в StringBuffer и добавьте новое содержимое в тот же StringBuffer, теперь вы можете записать SrtingBuffer в файл. так что теперь файл содержит как существующий, так и новый текст.

0
ответ дан 28 November 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: