System.IO.Directory.GetFiles用于特定文件名

时间:2016-06-29 06:35:41

标签: c# getfiles

在我的本地文件夹中,包含文件。 例如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();

2 个答案:

答案 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