Beispiel #1
0
        public StringBuilder ExecuteByContent(string content, ExecuteByLineDelegate objCallback, bool bIsSaveContent = false)
        {
            StringBuilder objContentBuilder = new StringBuilder();
            double        dFileCharLength   = content.Length;
            double        dLoadCharLength   = 0;

            DateTime dtUpdateTime = DateTime.Now;

            this.pgbScanLines.Maximum = Convert.ToInt32(dFileCharLength);
            this.pgbScanLines.Minimum = 0;
            this.pgbScanLines.Value   = this.pgbScanLines.Minimum;
            using (StringReader sr = new StringReader(content))
            {
                string line = null;
                while ((line = sr.ReadLine()) != null)
                {
                    Application.DoEvents();
                    if (bIsSaveContent)
                    {
                        objContentBuilder.AppendLine(line);
                    }

                    //if (!String.IsNullOrWhiteSpace(line)) line = Regex.Replace(line, @"(\p{C}+)|(<.*?>)", "");//去除可能的控制符、Html标签
                    if (String.IsNullOrWhiteSpace(line))
                    {
                        continue;
                    }


                    dLoadCharLength        += line.Length;
                    this.pgbScanLines.Value = this.pgbScanLines.Maximum > dLoadCharLength?Convert.ToInt32(dLoadCharLength) : this.pgbScanLines.Maximum - 1;

                    string text = line; //这里可以再做一些需要特别处理的数据清洗,如多余的空格等

                    if (!String.IsNullOrEmpty(text))
                    {
                        if (this.chkDelayTime.Checked)
                        {
                            dtUpdateTime = dtPickerUpdateTime.Value.AddSeconds(text.Length / (double)nmbReadSpeed.Value);
                        }

                        if (objCallback != null)
                        {
                            objCallback(text, gobjDataConfig, gobjOptionConfig);
                        }
                    }
                }
            }
            this.pgbScanLines.Value = this.pgbScanLines.Maximum;
            this.pgbScanLines.Value = this.pgbScanLines.Minimum;

            return(objContentBuilder);
        }
Beispiel #2
0
        public void ExecuteByDesktop(ExecuteByLineDelegate objCallbackByLine, ExecuteByFileDelegate objCallbackByFile = null)
        {
            DateTime dtStartTime = DateTime.Now;
            Encoding objEncoding = GetEncoding();

            switch (this.tabCorpusSource.SelectedTab.Name)
            {
            case "tabCorpusPageFile":
            {
                if (radFileMode.Checked)
                {
                    string sPathFile = this.tbFilePath.Text;

                    if (objCallbackByFile != null)
                    {
                        StringBuilder objContentBuilder = ExecuteByFile(sPathFile, objEncoding, objCallbackByLine, true);
                        objCallbackByFile(sPathFile, objContentBuilder, gobjDataConfig, gobjOptionConfig);
                    }
                    else
                    {
                        ExecuteByFile(sPathFile, objEncoding, objCallbackByLine);
                    }
                }

                if (radFloderMode.Checked)
                {
                    if (Directory.Exists(this.tbFilePath.Text))
                    {
                        string[] objFileColl = Directory.GetFiles(this.tbFilePath.Text, "*.*", SearchOption.AllDirectories);

                        this.pgbScanFiles.Maximum = Convert.ToInt32(objFileColl.Count());
                        this.pgbScanFiles.Minimum = 0;
                        this.pgbScanFiles.Value   = this.pgbScanFiles.Minimum;
                        foreach (string sPathFile in objFileColl)
                        {
                            if (objCallbackByFile != null)
                            {
                                StringBuilder objContentBuilder = ExecuteByFile(sPathFile, objEncoding, objCallbackByLine, true);
                                objCallbackByFile(sPathFile, objContentBuilder, gobjDataConfig, gobjOptionConfig);
                            }
                            else
                            {
                                ExecuteByFile(sPathFile, objEncoding, objCallbackByLine);
                            }
                            this.pgbScanFiles.Value += 1;
                            Application.DoEvents();
                        }
                        this.pgbScanFiles.Value = this.pgbScanFiles.Maximum;
                        this.pgbScanFiles.Value = this.pgbScanFiles.Minimum;
                    }
                }
                break;
            }

            case "tabCorpusPageContent":
            {
                string content = this.tbCorpusContent.Text;
                if (objCallbackByFile != null)
                {
                    StringBuilder objContentBuilder = ExecuteByContent(content, objCallbackByLine, true);
                    objCallbackByFile(String.Empty, objContentBuilder, gobjDataConfig, gobjOptionConfig);
                }
                else
                {
                    ExecuteByContent(content, objCallbackByLine);
                }
                break;
            }

            default:
            {
                break;
            }
            }

            AppendText(String.Format("完成,共用时{0}秒。", (DateTime.Now - dtStartTime).ToString()));
        }
Beispiel #3
0
        public StringBuilder ExecuteByFile(string sPathFile, Encoding objEncoding, ExecuteByLineDelegate objCallback, bool bIsSaveContent = false)
        {
            StringBuilder objContentBuilder = new StringBuilder();

            if (File.Exists(sPathFile))
            {
                //this.AppendText(String.Format("【进行】{0}", sPathFile));

                FileInfo info            = new FileInfo(sPathFile);
                double   dFileCharLength = info.Length;
                double   dLoadCharLength = 0;

                DateTime dtUpdateTime = DateTime.Now;
                this.pgbScanLines.Maximum = Convert.ToInt32(Math.Min(Int32.MaxValue, dFileCharLength));
                this.pgbScanLines.Minimum = 0;
                this.pgbScanLines.Value   = this.pgbScanLines.Minimum;
                using (StreamReader sr = new StreamReader(sPathFile, objEncoding))
                {
                    string line = null;
                    while ((line = sr.ReadLine()) != null)
                    {
                        Application.DoEvents();
                        if (bIsSaveContent)
                        {
                            objContentBuilder.AppendLine(line);
                        }
                        //if (!String.IsNullOrWhiteSpace(line)) line = Regex.Replace(line,@"(\p{C}+)|(<.*?>)","");//去除可能的控制符、Html标签
                        //if (!String.IsNullOrWhiteSpace(line)) line = Regex.Replace(line,@"(\p{C}+)","");//去除可能的控制符、Html标签
                        if (String.IsNullOrWhiteSpace(line))
                        {
                            continue;
                        }

                        dLoadCharLength += objEncoding.GetByteCount(line);
                        if (this.pgbScanLines.Maximum <= dLoadCharLength)
                        {
                            dFileCharLength           = dFileCharLength - dLoadCharLength + 1;
                            this.pgbScanLines.Maximum = Convert.ToInt32(Math.Min(Int32.MaxValue, dFileCharLength));
                            this.pgbScanLines.Value   = 0;
                            dLoadCharLength           = 0;
                        }
                        this.pgbScanLines.Value = this.pgbScanLines.Maximum > dLoadCharLength?Convert.ToInt32(dLoadCharLength) : this.pgbScanLines.Maximum - 1;

                        string text = line; //这里可以再做一些需要特别处理的数据清洗,如多余的空格等

                        if (!String.IsNullOrEmpty(text))
                        {
                            if (this.chkDelayTime.Checked)
                            {
                                dtUpdateTime = dtPickerUpdateTime.Value.AddSeconds(text.Length / (double)nmbReadSpeed.Value);
                            }

                            try
                            {
                                if (objCallback != null)
                                {
                                    objCallback(text, gobjDataConfig, gobjOptionConfig);
                                }
                            }
                            catch (Exception ep)
                            {
                                AppendText(ep.Message);
                            }
                        }
                    }
                }
                this.pgbScanLines.Value = this.pgbScanLines.Maximum;
                this.pgbScanLines.Value = this.pgbScanLines.Minimum;
            }

            return(objContentBuilder);
        }