在我的本地文件夹中,包含文件。 例如TB2.8.5_asd_asd和TB2.9.5_asd_asd。我怎样才能获得名称以TB2.6.5 _
开头的文件string[] dirs = System.IO.Directory.GetFiles(ConfigurationManager.AppSettings[@"LocalFolderPath"], "*" + ConfigurationManager.AppSettings["LocalFilesExtension"]).Where(s => s.StartsWith("TB2.6.5_")).ToArray();
答案 0 :(得分:2)
Directory.GetFiles()
方法允许您将搜索模式指定为其输入参数之一。您可以利用它来完成您的要求。所以代码将是这样的:
string PathToDirectory=Path.Combine(ConfigurationManager.AppSettings[@"LocalFolderPath"], ConfigurationManager.AppSettings[@"LocalFilesExtension"];
string searchPattern="TB2.6.5_*.*";
string[] dirs = System.IO.Directory.GetFiles(PathToDirectory,searchPattern,SearchOption.TopDirectoryOnly).ToArray();
如果要将搜索扩展到子目录,请将SearchOption
更改为AllDirectories
。您可以根据要求更改searchPattern。
根据您的评论进行更新: Illegal characters in path
。
这取决于您在配置中存储的值。即。AppSettings["LocalFilesExtension"]
如果\\
用作路径分隔符,则无需在i \之前包含@
,因为它会将\\
转换为\\\\
如果配置中只有一个\
,请使用@
答案 1 :(得分:2)
您可以使用filter参数进行设置
Directory.GetFiles(String, String)
即。
"filename.exe" = filters for filename.exe
"filename.*" = filters all files with the name filename
"*filename*" = contains filename