【问题标题】:Directory.getfiles(): specific names of files c#Directory.getfiles():文件的具体名称 c#
【发布时间】:2017-06-14 22:50:07
【问题描述】:

我一直在尝试:

  • 读取特定文件夹中的所有文件;
  • 仅选择以特定模式名称 + .csv 结尾的那些

到目前为止我有什么:

                string[] fileEntriesout = System.IO.Directory.GetFiles(dir + "\\" + "output\\", "*.csv*", System.IO.SearchOption.AllDirectories);

这运行良好,但它会获取所有 .CSVs 文件;

我尝试了什么:

                string[] extensions = { "_fv", "_body", "_out" };
            string[] fileEntriesout = Directory.GetFiles(dir + "\\" + "output\\", "*.csv*", System.IO.SearchOption.AllDirectories).Where(f => extensions.Contains(System.IO.Path.GetFileNameWithoutExtension(f).ToLower())).ToArray();
            string[] fileEntriesout = System.IO.Directory.GetFiles(dir + "\\" + "output\\", "*.*", System.IO.SearchOption.AllDirectories).Where(f => nextensions.Contains(new FileInfo(f).Extension.ToLower())).ToArray();
            string[] fileEntriesout = System.IO.Directory.GetFiles(dir + "\\" + "output\\", "*.*", System.IO.SearchOption.AllDirectories).Where(f => nextensions.Contains(new FileInfo(f).Name.ToLower())).ToArray();
            string[] fileEntriesout = System.IO.Directory.GetFiles(dir + "\\" + "output\\", "*.*", System.IO.SearchOption.AllDirectories).Where(f => nextensions.Contains(new FileInfo(f).Extension.ToLower())).ToArray();

我尝试了我发现的不同想法,但似乎没有一个可行。

总结:

  1. 我需要 string[] 获取所有包含(通常在文件名末尾)名称的 .CSVs 文件:“_fv”或“_body”或“_out”。

谢谢。

【问题讨论】:

  • 当你形成路径时,使用Path.Combine 方法。您假设默认情况下路径分隔符是 `\` 字符。

标签: c#


【解决方案1】:

使用LINQEnumerateFiles 代替GetFiles + Path.GetFilenameWithoutExtension

string[] extensions = { "_fv", "_body", "_out" };
string[] fileEntriesout = System.IO.Directory.EnumerateFiles(dir + "\\" + "output\\", "*.csv", System.IO.SearchOption.AllDirectories)
    .Where(file => extensions.Any(ex => Path.GetFileNameWithoutExtension(file).EndsWith(ex)))
    .ToArray();

String.EndsWith 有一个占用StringComparison 的过载,如果你想忽略这种情况(例如,也允许_Body):

EndsWith(ex, StringComparison.InvariantCultureIgnoreCase)

【讨论】:

  • 它正在工作!我所做的唯一更改是:将 Path.GetFilenameWithoutExtension 改为 Path.GetFileNameWithoutExtension(大写 N)谢谢!
猜你喜欢
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多