WPF 文件搜索工具
一个文件搜索实用程序,具有一些额外的技巧,适用于需要搜索 Windows 资源管理器无法识别的文件内部的人。
引言
Windows 资源管理器的搜索功能仅限于搜索具有已知文件类型的文件。此工具允许用户在任何类型的文件中搜索匹配的文本模式。它包括从文件中捕获数据并将其插入新文本文件的功能。
背景
该应用程序使用多个线程,以便在搜索操作期间 UI 保持响应。这里的重点是该应用程序的实用性和用户友好性,以及用于搜索的算法和技术。
使用应用程序
搜索标签页
构建应用程序,然后从 IDE 运行它,或将 exe 和 .config 文件复制到您喜欢的位置。
启动应用程序并选择搜索特定的“文件”或“路径”。
在“路径”模式下选中“递归”选项将导致该工具搜索所有子目录。
输入您希望从搜索中排除的任何文件扩展名。如果您正在搜索包含您知道没有您要查找内容的非常大的文件的目录,这将非常有用。
输入搜索文件路径或目录路径,或使用省略号按钮打开浏览对话框。
输入您希望搜索的文本。如果要使用正则表达式短语进行文本匹配,请选中“正则表达式”框。
单击“开始”按钮开始搜索。应用程序将搜索任何类型的文件以查找匹配的文本,并在数据网格中列出每个匹配项。匹配的文件名和路径也将被列出,但不会有行号或内容显示。
该应用程序包括许多用户设置,以便在会话之间提供持久性。这些设置在每次单击“开始”按钮时以及关闭应用程序时都会保存。
捕获标签页
捕获选项卡允许用户抓取包含匹配文本的行的一部分,并将其放入一个新文本文件中。一些选项允许在某种程度上格式化新文件。我使用它从日志中抓取错误消息,并创建用于针对数据库运行或创建 .bat 文件以在其他地方进行一些工作的 sql 脚本。
选中“启用数据捕获”框以启用从匹配文件中捕获数据。此功能仅对在文件中找到的文本起作用。路径和文件名匹配将不包括在输出中。
输入输出文件路径,或使用省略号按钮指定保存位置和名称。
输入要在匹配行中查找的起始文本。
输入要在匹配行中查找的结束文本。
选中捕获功能所需的选项。对于大多数人来说,它们应该是自解释的。底部的文本框用于“在每个输出后添加文本”选项。
关注点
代码的一些显着特征包括使用线程来保持 UI 在搜索操作期间的响应性。虽然有几种不同的方法可以实现这一点,但我选择了简单的 Thread.Start()
var t = new Thread(SearchPath);
t.Start(startPath);
Dispatcher.BiginInvoke()
与 Action 对象和泛型方法表达式一起使用,以在 UI 线程上进行 UI 更改
Dispatcher.BeginInvoke(new Action(() =>
{
pbProgressFiles.Value = 0;
pbProgressFiles.Minimum = 0;
pbProgressFiles.Maximum = fileCount;
}));
使用 Thread.Yield()
允许 UI 在行搜索之间更新。
我已在各个处理块之间包含了一些状态更新,以便让用户知道在工作进行时发生了什么。
try/catch 也已在适当的位置实现,以避免崩溃,通知用户发生了什么问题,并允许应用程序在遇到错误后返回到可用的状态。
在“路径”模式下,应用程序使用递归方法 SearchPath()
从用户提供的根位置开始搜索目录树。
历史
不适用