Если у меня есть файл, который структурирован следующим образом:
1234
12345
12345679101112
hello
world
Какие стратегии мне нужны, чтобы позволить мне заменить строку 1234
на, скажем, 123456
?Примечательно, что данные в каждой строке не имеют фиксированной длины и могут быть произвольно длинными.
Я рассмотрел загрузку всего файла в память и выполнение операции там, но мой файл слишком великвписаться в память.Я также рассмотрел разделение файла на две части, удаление ненужной строки, добавление новой строки и повторное объединение файлов.Но это кажется излишним, и добавляет в действие большую сложность и время обработки.
Я работаю в Swift и протестировал API FileHandle
, но единственный метод записи, доступный дляme is write(_:)
, который 1. устарел, а 2. перезаписывает данные файла, а не вставляет их.
Если я попытаюсь write(_:)
123456
чтобы заменить 1234
, я должен получить что-то вроде:
123456345
12345679101112
hello
world
(перезаписать новую строку и часть следующей строки).
Это не то поведение, которое яищу.Итак, я не уверен, какой API мне следует искать для моего предполагаемого поведения, которое также не считается устаревшим.
Существуют ли общие стратегии для решения такого рода проблем (я готов реализовать один из них самесли нужно)?В частности, есть ли способ сделать это с помощью Swift?