【问题标题】:System.IO.Directory.GetFiles for specific file nameSystem.IO.Directory.GetFiles 获取特定文件名
【发布时间】:2016-06-29 06:35:40
【问题描述】:

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

【问题讨论】:

  • ConfigurationManager.AppSettings["LocalFilesExtension"] 包含什么?它是否以. 开头?
  • 它以路径和扩展名开头
  • 您的LocalFilesExtension 看起来是空的,因此您正在过滤* 而不是*.*
  • @JeroenvanLangen 如何仅获取以 TB2.6.5_ 开头的文件名?目前我能够获取所有文件

标签: c# getfiles


【解决方案1】:

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\之前包含@,因为它会将\\转换为\\\\如果只有一个\在配置然后使用@

【讨论】:

  • 路径中有非法字符。
  • string PathToDirectory="ConfigurationManager.AppSettings[@'LocalFolderPath'], '' + ConfigurationManager.AppSettings['LocalFilesExtension']"; string[] dirs = System.IO.Directory.GetFiles(PathToDirectory, "TB2.6.5_.*", System.IO.SearchOption.AllDirectories).ToArray();
  • @Yeep:原因是你存储在配置中的数据,见更新说明
  • @Yeep :所以使用string PathToDirectory=Path.Combine(ConfigurationManager.AppSettings[@"LocalFolderPath"], ConfigurationManager.AppSettings[@"LocalFilesExtension"];
【解决方案2】:

可以使用filter参数来设置

Directory.GetFiles(String, String)

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

【讨论】:

  • string[] dirs = System.IO.Directory.GetFiles("path", ".exe");
猜你喜欢
  • 1970-01-01
  • 2016-07-18
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-28
  • 2016-03-05
相关资源
最近更新 更多