private void OpenFile(LineEvaluator mustIncludeLineInOutput) { FileStream fs = null; StreamReader sr = null; try { StringBuilder output = new StringBuilder(); string fileName = GetSelectedFile(); try { fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); } catch (Exception exc) { MessageBox.Show(exc.Message); return; } int lineNumber = 0; sr = new StreamReader(fs); while (!sr.EndOfStream) { lineNumber++; string line = sr.ReadLine(); if (mustIncludeLineInOutput(line, lineNumber)) { output.AppendLine("Line " + lineNumber.ToString() + " " + line); } } string contents = output.ToString(); if (string.IsNullOrEmpty(contents)) { contents = "File " + fileName + " opened but no contents matched filter"; } LogViewerDisplay.Text = contents; string lastChar = contents.Substring(contents.Length - 2, 1); LogViewerDisplay.Select(contents.Length - 3, contents.Length - 2); LogViewerDisplay.ScrollToCaret(); } catch (Exception exc) { MessageBox.Show(exc.Message); } finally { if (sr != null) { sr.Close(); sr.Dispose(); } if (fs != null) { fs.Close(); fs.Dispose(); } } }
//private void ApplyFilterAllFiles_Click(object sender, EventArgs e) //{ // if (FileList.Items.Count == 0) // { // MessageBox.Show("There are no files in the list"); // return; // } // LogViewerDisplay.Clear(); // foreach (var fileItem in FileList.Items) // { // var fileName = fileItem.ToString().Split()[0].Trim(); // string filteredContent = GetFilteredFileContents(LineContainsTokens, fileName); // if (!string.IsNullOrEmpty(filteredContent)) // { // LogViewerDisplay.AppendText("".PadLeft(100, '=')); // LogViewerDisplay.AppendText(Environment.NewLine); // LogViewerDisplay.AppendText("[START] " + fileName); // LogViewerDisplay.AppendText(Environment.NewLine); // LogViewerDisplay.AppendText("".PadLeft(100, '=')); // LogViewerDisplay.AppendText(Environment.NewLine); // LogViewerDisplay.AppendText(filteredContent); // LogViewerDisplay.AppendText("".PadLeft(100, '=')); // LogViewerDisplay.AppendText(Environment.NewLine); // LogViewerDisplay.AppendText("[END] " + fileName); // LogViewerDisplay.AppendText(Environment.NewLine); // LogViewerDisplay.AppendText("".PadLeft(100, '=')); // LogViewerDisplay.AppendText(Environment.NewLine); // } // } //} private void btnApplyFilterAllFiles_Click(object sender, EventArgs e) { if (FileList.Items.Count == 0) { MessageBox.Show("There are no files in the list"); return; } LogViewerDisplay.Clear(); btnApplyFilterAllFiles.Text = "Applying filter to all files ..."; btnApplyFilterAllFiles.Enabled = false; List <string> files = new List <string>(); foreach (var fileItem in FileList.Items) { var fileName = fileItem.ToString().Split()[0].Trim(); files.Add(fileName); } Thread logViewerTask = new Thread(new ParameterizedThreadStart(EnforceFilter)); logViewerTask.Priority = ThreadPriority.AboveNormal; logViewerTask.Start(files); }
private void EnforceFilter(object files) { bool foundSomething = false; List <string> fileNames = files as List <string>; if (fileNames != null) { foreach (var fileName in fileNames) { string filteredContent = GetFilteredFileContents(LineContainsTokens, fileName); if (!string.IsNullOrEmpty(filteredContent)) { foundSomething = true; this.Invoke((Action) delegate() { LogViewerDisplay.AppendText("".PadLeft(100, '=')); LogViewerDisplay.AppendText(Environment.NewLine); LogViewerDisplay.AppendText("[START] " + fileName); LogViewerDisplay.AppendText(Environment.NewLine); LogViewerDisplay.AppendText("".PadLeft(100, '=')); LogViewerDisplay.AppendText(Environment.NewLine); LogViewerDisplay.AppendText(filteredContent); LogViewerDisplay.AppendText("".PadLeft(100, '=')); LogViewerDisplay.AppendText(Environment.NewLine); LogViewerDisplay.AppendText("[END] " + fileName); LogViewerDisplay.AppendText(Environment.NewLine); LogViewerDisplay.AppendText("".PadLeft(100, '=')); LogViewerDisplay.AppendText(Environment.NewLine); }); } } if (!foundSomething) { this.Invoke((Action) delegate() { LogViewerDisplay.AppendText("No matches were found in all files."); }); } this.Invoke((Action) delegate() { btnApplyFilterAllFiles.Text = "Apply filter to all files"; btnApplyFilterAllFiles.Enabled = true; }); } }