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

System.IO.Directory.GetFiles for specific file name

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

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\since 之前包含 @ 它会将 \ 转换为 \\ 如果Config中只有一个\那么使用@

可以使用filter参数来设置

Directory.GetFiles(String, String)

"filename.exe" = filters for filename.exe
"filename.*" = filters all files with the name filename
"*filename*" = contains filename