Программы для обработки файлов
Зачем вообще пишут компьютерные программы? Чтобы облегчить труд человека. В частности, для выполнения рутинных задач по обработке файлов. Либо множества файлов, либо больших по размеру.
Даже файл, состоящий из нескольких миллионов строк, компьютер (программа) обработает за несколько секунд. Конечно, есть еще зависимость от того, какие именно операции выполняются, но даже если их много – все равно время возрастает не так сильно. Линейно, а не квадратично, если вы изучали алгоритмы, то понимаете, о чем идет речь.
Итак, предположим у нас есть большой текстовый файл, в котором надо отсеять ненужные строки по неким правилам. Например, убрать такие строки, в которых есть 4 символа, которые идут подряд в обычной клавиатурной раскладке. Например, "qwer", "wert" и т.д.Чтобы их отсеять, проще всего создать массив из таких сочетаний, благо их не так уж много.
nabor[0] = "qwer"; nabor[1] = "wert"; nabor[2] = "erty"; nabor[3] = "rtyu"; nabor[4] = "tyui"; nabor[5] = "yuio"; nabor[6] = "uiop"; nabor[7] = "poiu"; nabor[8] = "oiuy"; nabor[9] = "iuyt"; nabor[10] = "uytr"; nabor[11] = "ytre"; nabor[12] = "trew"; nabor[13] = "rewq"; nabor[14] = "asdf"; nabor[15] = "sdfg"; nabor[16] = "dfgh"; nabor[17] = "fghj"; nabor[18] = "ghjk"; nabor[19] = "hjkl"; nabor[20] = "lkjh"; nabor[21] = "kjhg"; nabor[22] = "jhgf"; nabor[23] = "hgfd"; nabor[24] = "gfds"; nabor[25] = "fdsa"; nabor[26] = "zxcv"; nabor[27] = "xcvb"; nabor[28] = "cvbn"; nabor[29] = "vbnm"; nabor[30] = "mnbv"; nabor[31] = "nbvc"; nabor[32] = "bvcx"; nabor[33] = "vcxz";Можно, конечно, и в более компактном виде закодить, но так удобнее для наглядности. Далее выбираем файл и читаем его в массив.
OpenFileDialog OPF = new OpenFileDialog(); if (OPF.ShowDialog() == DialogResult.OK){ infile = OPF.FileName; lines = File.ReadLines(infile).ToArray(); all = lines.Length; }Все-таки удобная штука – си шарп с .NET – буквально несколькими строками мы произвели массу нужных действий. Не надо ни открывать поток, ни читать из него, ни преобразовывать массивы байт и прочее – все одной строкой и уже в массиве.
Далее пробегаемся по второму массиву
int chet = -1; for (int i = 0;i<all;i++) { char[] charArr = lines[i].ToCharArray(); int flg = 0; for (int j = 0;j <= charArr.Length - 4;j++){ string nn = Char.ToString(charArr[j]) + Char.ToString(charArr[j + 1]) + Char.ToString(charArr[j + 2]) + Char.ToString(charArr[j + 3]); foreach (string nb in nabor){ if (nn == nb){flg = 1; break; } }if (flg == 1) break; }if (flg = 0){chet++; lines_new[chet] = lines[i]; }Здесь мы переводим строку в массив символов и по четыре из них проверяем на соответствие с комбинациями. Если находим, то сразу же выходим из цикла – зачем тратить время. Ну и в конце проверяем – если нет ни одного совпадения, то заносим строку в новый массив. И записываем его в файл:
using (StreamWriter writer = new StreamWriter(zapis)) { foreach (string str in lines_new){ if (str != null)writer.WriteLine(str); } }Очень простая программа из реального заказа (правда, там было больше условий проверки), но очень помогающая в работе. Если вам требуется создать программу по работе с файлами и не только, то пишите мне: большой опыт, низкие цены и высокая скорость – все имеется в наличии.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Читайте также:
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.