2017-02-15 2 views
1

Обратите внимание, что я не спрашиваю, как добавлять тексты в конце файла. Я спрашиваю, как добавлять тексты в начало файла.Как подготовить текст к файлу в Swift или Objective C?

let handle = try FileHandle(forWritingTo: someFile) 
//handle.seekToEndOfFile() // This is for appending 
handle.seek(toFileOffset: 0) // Me trying to seek to the beginning of file 
handle.write(content) 
handle.closeFile() 

Похоже, мой content записывается в начале файла, но он просто заменяет существующее согласие, а ... Спасибо!

ответ

3

В большинстве случаев большинство файловых систем не имеют встроенной поддержки для добавления данных в файлы. Аналогично, большинство API ввода-вывода файлов также не работают.

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

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

+0

Да, я нашел довольно хороший способ сделать это в Linux, например, так, чтобы текст «echo» был добавлен в файл $ (cat file.txt) »> file.txt', но, как вы сказали, это не так просто сделать. – 7ball

3

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

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

Смежные вопросы