在日常开发或资料整理中,我们经常需要在大量本地文件中快速定位含有关键词的文档。虽然系统自带搜索功能,但往往速度慢、不支持复杂匹配,且难以定制。本文将介绍如何用 C# 实现一个轻量级文本搜索器,支持多格式文件遍历、关键词匹配,并具备较好的性能。
🎯 功能设计
我们要实现的搜索器需满足以下需求:
-
递归遍历目录:支持指定根目录,递归扫描所有子文件夹。
-
灵活过滤文件:可按扩展名(如
.txt,.cs,.md)筛选。 -
关键词匹配:
-
区分大小写选项;
-
返回匹配的行号与内容。
-
-
异常处理:跳过无权限访问的文件/目录。
-
简单易用:提供清晰的 API,便于集成或扩展。
📦 核心代码实现
下面是一个完整的
TextSearcher类实现,代码结构清晰,可直接用于项目。🔍 使用示例
输出示例:
⚡ 性能与扩展建议
优化方向
-
并行处理:代码使用了
Parallel.ForEach,对大文件集可明显提升速度。 -
缓冲区调整:对极大文件可改用缓冲读取减少 IO 次数。
-
异步支持:若需 UI 不卡顿,可改为
async/await版本。
适用场景
-
代码库/文档库的内容检索
-
日志分析与错误排查
-
个人知识库全文搜索
💡 总结
这个 C# 文本搜索器实现简洁,核心功能约百行代码完成。通过安全的文件枚举和并行处理,既保证了稳定性又兼顾了效率。你可以将其封装为独立工具,或集成到桌面应用中作为内置搜索模块。
如需进一步强化,可考虑加入正则表达式匹配、结果高亮显示或索引持久化等功能,使其更适合大型项目使用。