Я пытаюсь очистить некоторые файлы, которые я получаю ежеквартально. У них есть куча повторяющихся заголовков, и я хотел бы заменить несколько значений строк за один раз. Я могу удалить одну строку за раз, но я не понимаю, как я могу передать файл и посмотреть на каждую строку и удалить, если это строка 1 или строка 2.Замена нескольких строковых значений в файлах
Каждый файл имеет не менее 100-300 тысяч строк и я получаю от 10 до 50 файлов каждый раз, когда данные сбрасываются мне примерно раз в квартал ... Было бы проще, если бы они не добавляли эти строки, но это не вариант.
Извините за вопрос новичков, но я не получаю код очень часто. Любая помощь приветствуется ...
static void Main(string[] args)
{
string tempFile = Path.GetTempFileName();
string t1 = "-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------";
string fName = "C:\\PoC\\test\\test.txt";
using (var sr = new StreamReader(fName))
using (var sw = new StreamWriter(tempFile))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.Contains(t1) == false)
{
sw.WriteLine(line);
}
}
sr.Close();
sw.Close();
}
File.Delete(fName);
File.Move(tempFile, fName);
}
Помните, что каждый раз, когда вы читаете, вы перемещаете позицию потока в последнем байтовом методе чтения и записи, который будет писать из этой позиции.Мой совет здесь следит за стартовой позицией и новой позицией после прочтения строки и перезаписывает этот диапазон с пустым пространством в вашем условии if. Это, если вы хотите сделать это напрямую, если не можете также создать новый файл в памяти и переопределить весь файл. – mijail