C# 特定文件名的System.IO.Directory.GetFiles
在“我的本地文件”文件夹中,包含文件。 例如TB2.8.5_asd_asd和TB2.9.5_asd_asd。如何仅获取名称以TB2.6.5开头的文件_C# 特定文件名的System.IO.Directory.GetFiles,c#,getfiles,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 =>
string[] dirs = System.IO.Directory.GetFiles(ConfigurationManager.AppSettings[@"LocalFolderPath"], "*" + ConfigurationManager.AppSettings["LocalFilesExtension"]).Where(s => s.StartsWith("TB2.6.5_")).ToArray();
该方法允许您将搜索模式指定为其输入参数之一。您可以利用它来完成您的需求。因此,代码如下所示:
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
如果要将搜索扩展到子目录,可以根据需要更改搜索模式
根据您的评论更新:路径中的非法字符
这将取决于您在配置中存储的值。例如,
AppSettings[“localfileextension”]
如果有\
用作路径分隔符,则无需在i\之前包含@
,因为它会将\
转换为\\\
,如果配置中只有一个\
,则使用@
可以使用过滤器参数进行设置
i、 e
ConfigurationManager.AppSettings[“LocalFileExtension”]
包含什么?它是否以
开头?它以路径和扩展名开头您的localfileextension
看起来是空的,因此您在*
上进行筛选,而不是*.
@JeroenvanLangen如何仅获取以TB2.6.5开头的文件名?目前,我能够获取path.string PathToDirectory=“ConfigurationManager.AppSettings[@'LocalFolderPath'],''+ConfigurationManager.AppSettings['LocalFileExtension']中的所有文件非法字符;string[]dirs=System.IO.Directory.GetFiles(PathToDirectory,“TB2.6.5.*”,System.IO.SearchOption.AllDirectories).ToArray()@是的:原因是您存储在配置中的数据,请参阅更新notes@Yeep:因此使用string PathToDirectory=Path.Combine(ConfigurationManager.AppSettings[@“LocalFolderPath”]、ConfigurationManager.AppSettings[@“localfileextension”];
string[]dirs=System.IO.Directory.GetFiles(“Path”、“.exe”);
"filename.exe" = filters for filename.exe
"filename.*" = filters all files with the name filename
"*filename*" = contains filename