сравниваем содержимое двух файлов построчно

C Sharp > сравниваем содержимое двух файлов построчно
16.01.2018 17:59:29


Наиболее часто встречающиеся слова в статье:

[readText] [readText2] [foreach] [insert_toFile] [слияния] [ToLower] [массива] [contains] [contains2] [path_tofile]


Статья:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
 
namespace sopostavit_views
{
    class Program
    {
        static void Main(string[] args)
        {
            // сравниваем содержимое двух файлов построчно
            // EXEC sp_tables;
            // SELECT * FROM sysobjects WHERE xtype=''V''
            string path_tofile = "tofile.csv";
            File.Delete(path_tofile);
            string strDf2 = "";
            string path2 = "corpare_file2.txt";
            string[] readText2 = File.ReadAllLines(path2);
 
            string strDf = "";
            string path = "corpare_file1.txt";
            string[] readText = File.ReadAllLines(path);
            string insert_toFile = "Views          ,corpare_file1,corpare_file2 " + "\r\n"; // результирующая  строка на запись в итоговый  файл 
 
            string[] c = new string[readText.Length + readText2.Length];  // пустой слияние  2 массивов сделаем массив нужной  размерности
            //string[] _readText = new string[readText.Length];   // пустой массив для  нижннего регистра
           // string[] _readText2 = new string[readText2.Length]; // пустой массив для  нижннего регистра
            int j = 0;
            //int i = 0;
            // заполним массив новый из слияния
            foreach (var x in readText)
            {
                c[j] = x;
             //   _readText[j] = x.ToLower();
                j = j + 1;
            }
 
            foreach (var x in readText2)
            {
                c[j] = x;
            //    _readText2[i] = x.ToLower();
                j = j + 1;
            }
            // конец заполнению массива
            // уникальный  массив , только  повторяющиеся  значения 
            var arr1 = c.GroupBy(n => n, (n, m) => new { Key = n, Cnt = m.Count() })
                      .Where(n => n.Cnt > 1)
                      .Select(n => n.Key)
                      .ToArray();
            // уникальный  массив без повторов
            var arr = c.GroupBy(n => n, (n, m) => new { Key = n, Cnt = m.Count() })
          .Where(n => n.Cnt == 1)
          .Select(n => n.Key)
          .ToArray();
 
            string[] EndStr = new string[arr1.Length + arr.Length]; // окончательный  массив  с уникальными данными содержит имена как есть
            j = 0;
            // заполним массив новый из слияния
            foreach (var x in arr)
            {
                EndStr[j] = x;
               // EndStrLower[j] = x.ToLower();
                j = j + 1;
            }
 
            foreach (var x in arr1)
            {
                EndStr[j] = x;
                j = j + 1;
            }
            // конец заполнению массива
 
            // Приведём массивы  к нижнему  регистру
            //--------------------------------
 
            string fl1 = "";
            string fl2 = "";
            j = 0;
            foreach (string s in EndStr)
            {
 
                // strDf = EndStr[j].ToLower().Trim();
                strDf = EndStr[j].Trim();
                fl1 = "";
                fl2 = "";
 
                bool contains = readText.Contains(strDf); // проверим содержится  ли в массиве readText2 элемент по выборке массива слияния  (перебьираем)
                bool contains2 =readText2.Contains(strDf); // проверим содержится  ли в массиве readText элемент по выборке массива слияния  (перебьираем)
                if (contains == true && contains2 == false)
                    { fl1 = "+"; fl2 = "-"; }
                if (contains2 == true && contains == false)
                    { fl1 = "-"; fl2 = "+"; }
                if (contains2 == true && contains == true)
                    { fl1 = "+"; fl2 = "+"; }
                insert_toFile = insert_toFile + strDf + "," + fl1 + "," + fl2 + "\r\n";
                j = j + 1;
 
            }
            // Запись в общий файл.
            using (FileStream fs = File.Create(path_tofile))
            {
                // Запись в общий файл.
                Byte[] info = new UTF8Encoding(true).GetBytes(insert_toFile);
                fs.Write(info, 0, info.Length);
            }
            Console.Write("iocsha.ddns.net @2017. Обработка закончена ....для  выхода нажмите  на любую клавишу.... ");
            string text = Console.ReadLine();
        }
    }
}