Добавление Строки к середине Файла с.NET

Привет я работаю над чем-то, и я должен быть в состоянии быть в состоянии добавить текст в .txt файл. Хотя мне завершили это, у меня есть небольшая проблема. Я должен записать строку посреди файла более или менее. Пример:

Hello my name is Brandon,
I hope someone can help, //I want the string under this line.
Thank you.

Надо надеяться, кто-то может помочь с решением.

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

11
задан John Saunders 11 January 2010 в 19:46
поделиться

5 ответов

Проверьте File.ReadAllLines(). Наверное, самый простой способ.

     string[] full_file = File.ReadAllLines("test.txt");
     List<string> l = new List<string>();
     l.AddRange(full_file);
     l.Insert(20, "Inserted String");
     File.WriteAllLines("test.txt", l.ToArray());
2
ответ дан 3 December 2019 в 05:12
поделиться

одна из уловок - файловая транзакция. Сначала вы читаете файл до строки, в которую хотите добавить текст, но во время чтения сохраняете прочитанные строки в отдельном файле, например, tmp.txt, а затем добавляете нужный текст в tmp.txt (в конце файла), после чего продолжаете чтение из исходного файла до конца. Затем замените tmp.txt на исходный файл. в конце получите файл с добавленным текстом посередине :)

.
2
ответ дан 3 December 2019 в 05:12
поделиться

Как упоминали другие, перезаписывать файл после точки вновь вставленного текста невозможно, если нужно придерживаться простого текстового файла. Однако, в зависимости от ваших требований, можно ускорить поиск места для начала записи. Если вы знали, что вам нужно добавить данные после строки N, то вы могли бы вести отдельный "индекс" смещений номеров строк. Это позволило бы вам искать непосредственно в нужном месте, чтобы начать чтение/запись.

0
ответ дан 3 December 2019 в 05:12
поделиться

С обычными файлами это невозможно - вы должны прочитать текст, который следует за строкой, которую вы хотите добавить после, перезаписать файл, а затем добавить исходный текст трейлинга.

Думайте о файлах на диске как о массивах - если вы хотите вставить некоторые элементы в середину массива, вам нужно сдвинуть все следующие элементы вниз, чтобы освободить место. Разница в том, что .NET предлагает удобные методы для массивов и Lists, которые делают это простым. Насколько я знаю, API файлового ввода/вывода не предлагают таких методов удобства.

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

var allLines = File.ReadAllLines( filename ).ToList();
allLines.Insert( insertPos, "This is a new line..." );
File.WriteAllLines( filename, allLines.ToArray() );
13
ответ дан 3 December 2019 в 05:12
поделиться

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

Или вы можете искать индекс указанной строки и записи после его использования escape Sequence \ N.

0
ответ дан 3 December 2019 в 05:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: