2009-12-09 2 views
1

У меня есть "|" который все, что я хочу сделать, это прочитать все строки в нем и где «< \ HRM>» существует, замените его на «» (ничего). И где «HRM» существует, замените его на. Он должен написать все в том же порядке, в котором он был прочитан.C# замена элементов в текстовом файле

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

ответ

2

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

using (StreamReader stream = new StreamReader(File.Open(@"YourFilePath", FileMode.Open))) 
{ 
    string fileText = stream.ReadToEnd(); 

    // Do your replacements 
    fileText = fileText.Replace(@"<\HRM>", string.Empty); 
    fileText = fileText.Replace(@"HRM\", ";"); 

    using (StreamWriter writer = new StreamWriter(File.Open("@YourFilePath", FileMode.Create))) 
    { 
     // You do a create because the new file will have less characters than the old one 
     writer.Write(fileText); 
    } 
} 
+0

Ух, прочитав все это сразу? Замена по очереди намного проще при использовании вашей памяти. –

+0

Вы делаете пару предположений, что A) в файле есть/n/r. Возможно, этого не будет. B), что «» или «HRM» не завершают линии. Я не знал, как выглядит файл, поэтому лучший способ - прочитать все, даже если он медленный. Я собирался просто читать в байтах буфер, но как узнать, когда я был в середине «<\HRM>» или нет? –

+0

это отлично работало, надеясь, что оно будет размещено в дополнительном пространстве, поэтому оно заканчивается тем, что | ; , Я обманул его, что | | уже находятся в файле. – 2009-12-09 20:20:35

0

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

Общепринятая процедура вдоль линий из

  • Открыть новый файл
  • выписывать новый файл
  • Move поверх старого файла
0

вам придется переписать файл, поскольку вы будете зачистки символы, и, таким образом, делая его более компактным - если вы не захотите заменить свой < \ HRM> эквивалентными пространствами, чтобы сохранить позиции.

String.Replace («изменить», «к этому»)

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