Prabaharan T Ответов: 2

Как разделить большой файл .txt на 2 части на основе количества делиметров ( | ).


Привет ,
Я новичок в C#. net. Мне нужна программа для разделения большого файла .txt на 2 на основе количества делиметров ( | ). Если строка данных имеет & lt;=60 трубный делиметр, то она должна идти в файл 1, если строка данных имеет >60, то она идет в файл 2. Как я могу достичь. Пожалуйста, помогите мне, если это возможно.

Что я уже пробовал:

Я пробовал использовать пакетный скрипт, но он не так уж эффективен. Поэтому я предпочитаю C# . Я бы не попробовать еще. Я скоро отправлю сообщение.

2 Ответов

Рейтинг:
2

George Swan

Я бы использовал для этого потоки, если бы входной файл был большим. Вам понадобится StreamReader и два StreamWriters. Положите их внутрь using заявление таким образом, они закрываются должным образом, когда выходят за пределы области действия. Что-то вроде этого.


const string path = @"C:\temp\Test.txt";
const string pathA = @"C:\temp\testA.txt";
const string pathB = @"C:\temp\testB.txt";
try
{
    using (var streamOutA = new StreamWriter(pathA))
    using (var streamOutB = new StreamWriter(pathB))
    using (var streamReader = new StreamReader(path))
    {
        while (streamReader.Peek() >= 0)
        {
            string line = streamReader.ReadLine();
            if ((line.Count(c => c == '|') > 60))
            {
                streamOutA.WriteLine(line);
            }
            else
            {
                streamOutB.WriteLine(line);
            }
        }
    }
 }
catch (Exception e)
{
    Console.WriteLine("File Exception thrown {0} ", e.Message);
}


Рейтинг:
16

OriginalGriff

Видеть здесь: Подсчет строк в строке[^]- речь идет о линиях, но те же методы (и результаты скорости) будут работать для символов трубы внутри линии.
Прочитайте файл с помощью File.ReadAllLines, затем обработайте каждую строку, чтобы получить количество труб.


Prabaharan T

Спасибо за ваше предложение. Я попробую это решение.

OriginalGriff

Пожалуйста!