我正在为我自制的Windows资源管理器开发搜索功能。我使用Directory.GetFiles(string path, string searchPattern, searchOption searchOption)
来做到这一点。我的问题是,当我打电话时:
string searchPattern = '"' + searchBox.Text + '"'; // searchPattern = "duck"
string path = @"D:\test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);
抛出异常:
“路径中的非法字符。”
这是文件结构:
D:\
---test\ (Folder)
-------duck.txt (File)
答案 0 :(得分:4)
Directory.GetFiles
不支持正则表达式。但它确实支持少数特殊的“通配符”字符。来自MSDN:
*
零个或多个字符。
?
完全为零或一个字符。
请改为尝试:
string searchPattern = '*' + searchBox.Text + '*'; // searchPattern = *duck*
string path = @"D:\test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);
答案 1 :(得分:0)
你得到“路径中的非法字符。”。,因为你的搜索模式中有"
个字符
尝试
string searchPattern ="duck.txt";
你会找到你想要的文件
如果您只需要将文件名作为搜索模式,那么
string searchPattern =searchBox.Text +".txt";
如果您需要获取包含搜索文本的文件,可以使用
string searchPattern ="*" +searchBox.Text +"*";