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

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

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

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

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

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

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


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

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

10   голосов , оценка 4 из 5
Похожие ответы