2015-09-17 2 views
0

Я хочу добавить некоторые данные в текстовый файл после поиска определенного предложения, в качестве примера я хочу добавить некоторые строки после поиска This the place to write your sentence
Как я могу это сделать, я правильно пишу текстовый файл, используя StreamWriter.
Записать в файл после определенного предложения

Может ли кто-нибудь дать мне код или ссылку?

+0

Я голосующий, чтобы закрыть этот вопрос не по теме, потому что SO не является сайтом gimme-teh-codez. – xxbbcc

ответ

4

Вставить текст в файл не так просто, как вам пришлось бы перемещать данные после точки вставки, чтобы освободить место для нового текста. A StreamWriter не поддерживает файловые операции, необходимые для этого.

Простой подход, чтобы прочитать файл в строку, изменить строку, а затем записать его в файл:

string text = File.ReadAllText(fileName); 
string insertPoint = "This the place to write your sentence"; 
int index = text.IndexOf(insertPoint) + insertPoint.Length; 
text = text.Insert(index, "Text to insert"); 
File.WriteAllText(fileNAme, text); 
0

Использование File.ReadAllLines читать весь текстовый файл в строку. Затем, чтобы найти конкретное предложение «Это место, чтобы написать ваше предложение», используйте метод String.IndexOf. Когда у вас есть индекс, вы можете использовать метод String.Insert, чтобы добавить любой текст, который вы хотите. Наконец, замените существующий файл на новую строку, которую вы только что создали, используя File.WriteAllLines. Вы также можете использовать метод StreamWriter.WriteLine, если хотите.

0

Это действительно все о System.IO.Stream (который реализует IDisposable, так что вы должны использовать его в using заявление), byte[] (ака буферов), и System.Text.ASCIIEncoding.ASCII или более широко используется System.Text.UTF8encoding.UTF8 кодирование.


С учетом сказанного, есть статические методы на System.IO.File, которые делают эту операцию довольно легко.

 System.Text.Encoding encoding = System.Text.UTF8Encoding.UTF8; // we don't have to declare and set a variable, I'm just doing this to emphasize the encoding class and it's usage. 

     string myText = "My Text To Assert"; 
     string lookupText = "This the place to write your sentence"; 

     string filePath = "C:\test.txt"; 

     string payload = System.IO.File.ReadAllText(filePath, encoding); 
     payload.Replace(lookupText, String.Format("{0}{1}", lookupText, myText)); 
     System.IO.File.WriteAllText(filePath, payload); 
+0

'insert', скорее всего, лучше, чем' replace', но я предложу это как возможное решение, которое отличается от Guffa's –

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