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); }
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())); }
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); }