Exemplo n.º 1
0
        static void DebugCountReadWithChange(string path)
        {
            DateTime localDate = DateTime.Now;

            TJList    = new List <TJobject>();
            coord     = new TJCoord();
            coordFin  = new TJCoordFin();
            pathTimer = path;


            aTimer           = new Timer(5000);
            aTimer.Elapsed  += OnTimedEvent;
            aTimer.AutoReset = true;
            aTimer.Enabled   = true;



            DateTime localDateEnd = DateTime.Now;

            Console.WriteLine(localDateEnd - localDate);
            Console.ReadKey();
        }
Exemplo n.º 2
0
        static void DebugCountRead(string path)
        {
            DateTime localDate = DateTime.Now;

            List <TJobject> TJList = new List <TJobject>();
            int             count  = 0;

            TJCoord coord = new TJCoord();

            while (TJ.ReadTJ(path, ref TJList, 1000, ref coord))
            {
                count = TJList.Count + count;
                TJList.Clear();
                Console.WriteLine(coord.filename);
            }

            count = TJList.Count + count;

            DateTime localDateEnd = DateTime.Now;

            Console.WriteLine("Count = " + count);
            Console.WriteLine(localDateEnd - localDate);
            Console.ReadKey();
        }
Exemplo n.º 3
0
    /// <summary>
    ///Чтение элементов ТЖ в количестве count
    /// </summary>
    /// <param name="path">путь к папке с ТЖ</param>
    /// <param name="TJList">возвращает список элементов ТЖ</param>
    /// <param name="count">количество элементов для чтения</param>
    /// <param name="coord">координаты места начала|окончания чтения</param>
    public static bool ReadTJ(string path, ref List <TJobject> TJList, int count, ref TJCoord coord)
    {
        bool pass = true;

        if (coord.filename == "")
        {
            pass = false;
        }

        List <string> files = new List <string>(Directory.EnumerateFiles(path, "*.log", SearchOption.AllDirectories));

        foreach (var f in files)
        {
            int    len     = 0;
            string rollstr = "";
            long   offset  = 0;

            //смещение при чтении файла, местоположение в файле после чтения блока
            if (coord.filename == f)
            {
                pass = false;
            }
            if (pass)
            {
                continue;
            }

            char[] buffer     = new char[buflen];
            byte[] bufferbyte = new byte[buflen];

            BinaryReader objReader = new BinaryReader(File.Open(f, FileMode.Open));
            objReader.BaseStream.Position = coord.offset;

            while (true)
            {
                bufferbyte = objReader.ReadBytes(buflen);
                len        = bufferbyte.Length;

                offset = offset + len;

                //Разобьем на строки начинаем со второй
                string bufstr  = ArrByteToArrString(bufferbyte);
                string pattern = "(.)([0-9][0-9]:[0-9][0-9]\\.([0-9]{4}|[0-9]{6})-[0-9]+,)";
                bufstr = Regex.Replace(bufstr, pattern, "$1" + '\n' + "$2");
                string[] strTJ = bufstr.Split('\n');

                int lastcount = strTJ.Length;
                if (lastcount == 0)
                {
                    break;
                }

                //Соединяем последнюю строку из прошлого чтения и первую этого
                int index = FirstAndLastString(ref strTJ, ref rollstr, ref TJList, f);

                for (int i = index; i < lastcount; i++)
                {
                    //Количество возвращаемых элементов достигло count
                    if (count == 0)
                    {
                        coord.filename = f;

                        //Ищем следующий элемент strTJ[i] в tmpstr
                        string findstr = strTJ[i].Remove(13);


                        if (offset < buflen)
                        {
                            coord.offset = FindStrInArrByte(findstr, bufferbyte) + coord.offset;
                        }
                        else
                        {
                            coord.offset = offset - len + FindStrInArrByte(findstr, bufferbyte) + coord.offset;
                        }

                        objReader.Close();
                        return(true);
                    }

                    if ((i == lastcount - 1) & (len == buflen))
                    {
                        rollstr = strTJ[i];
                    }
                    else
                    {
                        TJList.Add(ParseStringTJ(strTJ[i], f));
                    }

                    count--;
                }

                if (len != buflen)
                {
                    break;
                }
            }
            coord.offset = 0;
            objReader.Close();
        }

        coord.filename = "";
        coord.offset   = 0;
        return(false);
    }