Не то чтобы нужно, есть и другие варианты создания простейших таблиц данных
Маркер, любой символ (набор символов), который никогда не будет использоваться в абзацах (во всяком случае не будет первым в строке). Возьми например решетку, текст будет такой:
#Текст1
Текст1 Текст1
Текст1 Текст1 Текст1 Текст1 Текст1 Текст1
#Текст2
Текст2 Текст2
Текст2 Текст2 Текст2 Текст2 Текст2 Текст2
Читаешь первый символ каждой строки, нашел решетку, сравниваешь с ключем. Если совпало, выводишь всё до следующей решетки или конца файла. Если не совпало ищеш следующую.
Можно ключ заключать в квадратные скобки, как делают в ini файлах. Можешь посмотреть на формат xml, но там возможностей слишком много, он больше для хранения древовидных структур произвольных параметров.
Чуть посложнее, но быстрее, как правильно сказал Andys, будет прочитать весь файл в память как массив байт (не забудь выделить память), и потом работать с блоком памяти. Только если у тебя текст в уникоде, не забывай, что нелатинские символы занимают 2 байта.
Спойлер
Andys, предлагаешь человеку реализовать cобственный SQL сервер (точнее dbf)?
При небольшом количестве записей и размере данных, индексный файл может замедлить обращение к данным. При большой нагрузке лучше индекс строить в памяти при загрузке программы и менять при изменениях. И сам файл можно просто прочитать в память, если конечно file.txt не десяток гиг. Но человек всёже не демона БД пишет.
Вот вопрос с изменениями гораздо серьезнее. Если одновременно могут изменять данные несколько клиентов, тут сначала нужно реализовать блокировку файлов.