-1

我正在为我自制的 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)
4

2 回答 2

4

Directory.GetFiles不支持正则表达式。但是,它确实支持少数特殊的“通配符”字符。来自 MSDN:

*零个或多个字符。
?正好零个或一个字符。

试试这个:

string searchPattern = '*' + searchBox.Text + '*'; // searchPattern = *duck*
string path = @"D:\test";
string[] searchResults = Directory.GetFiles(path, searchPattern, System.IO.SearchOption.AllDirectories);
于 2013-10-16T02:55:08.230 回答
0

你得到“路径中的非法字符。”。因为您"在搜索模式中给出了字符

尝试

string searchPattern ="duck.txt"; 

你会找到你想要的文件

如果您只需要提供文件名作为搜索模式,那么

string searchPattern =searchBox.Text +".txt"; 

如果您需要获取包含搜索文本的文件,您可以使用

string searchPattern ="*" +searchBox.Text +"*"; 
于 2013-10-16T03:14:12.807 回答