Вы не можете сделать это без записи всего файла. Вы можете искать в начале строки, а затем написать новую строку. Но сначала вы должны выяснить смещение этой линии. Если у вас его еще нет, это означает чтение файла с начала до этой строки. Тогда вы можете написать новую строку, но только если она точно такой же длины, что и исходная строка. Если он длиннее, он перезапишет следующую строку - нет способа вставить данные в файл. Если новая строка короче старой, конец старой строки останется. То же самое требование длины также сложно. Это означает одинаковую длину в байтах. В зависимости от кодировки символов для некоторых символов может потребоваться больше байтов, чем для других.
Если вам действительно нужно это сделать и заставить его работать практически в каждом случае, вам нужно будет выполнить следующие шаги:
- Прочитайте весь файл, чтобы узнать смещение интересующей вас линии
- Искать смещение линии
- Написать новую строку
- Запишите остаток файла, который вы прочитали на шаге 1.
Этот алгоритм будет работать независимо от того, насколько длинны или коротки строки или как они закодированы. Но это, вероятно, будет дороже, чем просто записать весь файл, особенно если у вас он есть в памяти в любом случае.
Вы на самом деле убедились, что выписывать весь файл недопустимо, или вы здесь преждевременно оптимизируете? Если ваш текстовый файл действительно такой большой, вам следует подумать о базе данных, такой как SQLite, или использовать Core Data.