摘要:using System;using System.IO;using System.Linq;using System.Text.RegularExpressions;class FileSearchTool{static void Main{Console.
实现一个文件搜索工具需要综合使用 C# 中的文件操作功能和正则表达式处理能力,以支持按文件名、文件内容或文件类型进行搜索。以下是一个实现的示例工具。
using System;using System.IO;using System.Linq;using System.Text.RegularExpressions;class FileSearchTool{static void Main{Console.WriteLine("欢迎使用文件搜索工具!");Console.Write("请输入目标目录路径: ");string directoryPath = Console.ReadLine;if (!Directory.Exists(directoryPath)){Console.WriteLine("目录不存在,请检查路径后重试。");return;}Console.WriteLine("\n选择搜索模式:");Console.WriteLine("1. 按文件名搜索");Console.WriteLine("2. 按文件内容搜索");Console.WriteLine("3. 按文件类型搜索");Console.Write("请输入选项 (1/2/3): ");string option = Console.ReadLine;switch (option){case "1":SearchByFileName(directoryPath);break;case "2":SearchByFileContent(directoryPath);break;case "3":SearchByFileType(directoryPath);break;default:Console.WriteLine("无效选项,请重新运行程序。");break;}}static void SearchByFileName(string directoryPath){Console.Write("请输入文件名或模式 (支持通配符 * 和 ?): ");string fileNamePattern = Console.ReadLine;if (string.IsNullOrEmpty(fileNamePattern)){Console.WriteLine("文件名不能为空!");return;}try{var files = Directory.EnumerateFiles(directoryPath, fileNamePattern, SearchOption.AllDirectories);Console.WriteLine($"\n找到以下符合条件的文件 ({files.Count} 个):");foreach (var File in files){Console.WriteLine(file);}}catch (Exception ex){Console.WriteLine($"发生错误: {ex.Message}");}}static void SearchByFileContent(string directoryPath){Console.Write("请输入要搜索的内容关键字: ");string keyword = Console.ReadLine;if (string.IsNullOrEmpty(keyword)){Console.WriteLine("关键字不能为空!");return;}Console.WriteLine("正在搜索,请稍候...");try{var files = Directory.Enumeratefiles(directoryPath, "*", SearchOption.AllDirectories);foreach (var file in files){try{string content = File.ReadAllText(file);if (content.Contains(keyword, StringComparison.OrdinalIgnoreCase)){Console.WriteLine($"文件包含关键字: {file}");}}catch (Exception ex){Console.WriteLine($"无法读取文件: {file},原因: {ex.Message}");}}}catch (Exception ex){Console.WriteLine($"发生错误: {ex.Message}");}}static void SearchByFileType(string directoryPath){Console.Write("请输入文件类型 (例如: .txt, .cs): ");string fileType = Console.ReadLine;if (string.IsNullOrEmpty(fileType) || !fileType.StartsWith(".")){Console.WriteLine("请输入有效的文件类型!");return;}try{var files = Directory.EnumerateFiles(directoryPath, $"*{fileType}", SearchOption.AllDirectories);Console.WriteLine($"\n找到以下符合条件的文件 ({files.Count} 个):");foreach (var file in files){Console.WriteLine(file);}}catch (Exception ex){Console.WriteLine($"发生错误: {ex.Message}");}}}选择模式程序启动后提示用户选择搜索模式:1:按文件名搜索2:按文件内容搜索3:按文件类型搜索输入搜索条件
根据模式要求用户输入对应的搜索条件:文件名模式:支持通配符 *(匹配任意字符)和 ?(匹配单个字符)。内容关键字:查找文件内容中包含指定关键字的文件。文件类型:指定文件扩展名,例如 .txt、.cs。递归搜索
程序默认对目标目录及其子目录进行递归搜索。输出结果
搜索完成后,程序将列出所有匹配的文件路径。正在搜索,请稍候...文件包含关键字: C:\Users\Example\Documents\File1.txt文件包含关键字: C:\Users\Example\Documents\SubFolder\File2.cs
此工具使用简单,功能灵活,适合中小规模文件搜索需求。在大规模目录中使用时,可以进一步优化性能,例如引入多线程或流式处理技术。
来源:面试八股文
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!