Разбить текстовый файл на несколько, по признаку - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день господа!! Прошу вас помочь в разрешении следующей задачи: Имеется текстовый файл(назовем база абонентов), в котором содержаться данные по абонентам, каждая строка может относиться к одному из N "регионов", в строке на это указывает определенные символы. Строк много, примерно 1 500 000. Задача в том, что бы разбить этот файл на N файлов(по признаку региона). Количество уникальных регионов заведомо неизветсно. В настоящий момент реализовал вот так:
Листинг программы
  1. using (StreamReader sr = new StreamReader(label1.Text))
  2. {
  3. while ((line = sr.ReadLine()) != null)
  4. {
  5. str = line.Split(';');
  6. if (!System.IO.File.Exists("D:\\" + str[7] + ".d"))
  7. System.IO.File.AppendAllText("D:\\" + str[7] + ".d", "Заголовок", Encoding.GetEncoding("CP866"));
  8. tmpstr = str[0] + ";" + str[3];
  9. System.IO.File.AppendAllText("D:\\" + str[7] + ".d", tmpstr, Encoding.GetEncoding("CP866"));
  10. }
  11. }
Дело в том, что AppendAllText работает чересчур долго. Пробовал использовать для записи каждой строки ... using StreamWriter ..., но прибавки по скорости не заметил. Возможно ли реализовать данную задачу каким либо еще более оптимальным способом? P.S. Пробовал что то в таком духе:
Листинг программы
  1. StreamWriter[] swm;
  2. swm = new StreamWriter[5];
  3. int i;
  4. for (i = 0; i <= 5; i++)
  5. {
  6. swm[i] = new StreamWriter("D:\\" + i.ToString() + ".d", false, Encoding.GetEncoding("CP866"));
  7. swm[i].Write("TEST");
  8. }
Файлы создаются, но swm[i].Write не пишет содержимое в файлы...

Решение задачи: «Разбить текстовый файл на несколько, по признаку»

textual
Листинг программы
  1. for (i = 0; i <= 5; i++)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы