Вы не можете использовать дескриптор файла для вставки данных в существующий файл. Он поддерживает только перезапись всего или части файла или добавление в конец файла.
Вам необходимо создать новый файл, сначала написав нужную строку в начале, затем записав содержимое существующего файла, а затем записав нужную строку в конце.
Вот расширение, которое вы можете использовать для добавления содержимого существующего файла в дескриптор файла. Предполагается, что дескриптор файла уже настроен для записи.
extension FileManager {
func appendContentsOfFile(at fileURL: URL, to outputHandle: FileHandle) throws {
let inputHandle = try FileHandle(forReadingFrom: fileURL)
while true {
let data = inputHandle.readData(ofLength: 4096)
if data.isEmpty {
break
} else {
outputHandle.write(data)
}
}
inputHandle.closeFile()
}
}
Используя это, решение вашего вопроса достигается с помощью следующих шагов:
- Создание FileHandler для записи в новый файл.
- Запишите данные для начальной строки.
- Вызовите FileManager.default.appendContentsOfFile (по адресу: someFileURL, to: yourFileHandle), чтобы добавить существующий файл.
- Запишите данные для конечной строки.
- Закройте ручку.
- При необходимости удалите старый файл, переименуйте новый файл.