【问题标题】:How to get files names in multiple folders under some condition如何在某些情况下获取多个文件夹中的文件名
【发布时间】:2017-03-17 02:27:53
【问题描述】:
如果我有这样的路径:
C:\Program Files (x86)\basic\data\
在这个路径文件夹中是这样的:
20160314_002_874
20160314_004_657
20160314_006_169
20160315_006_169
20160316_006_169
如何获取这些文件夹名称的日期部分=特定日期的文件夹中的所有文件名
例如:
我希望文件夹中的所有文件名都以列表中的以下日期(20160314) 开头。
【问题讨论】:
标签:
c#
string
linq
file
directory
【解决方案1】:
使用DirectoryInfo:
using System.Collections.Generic;
using System.IO;
List<FileInfo> files = new List<FileInfo>();
DirectoryInfo rootDir = new DirectoryInfo(@"C:\Program Files (x86)\basic\data\");
var directories = rootDir.GetDirectories("20160314*");
foreach (var directory in directories)
{
files.AddRange(directory.GetFiles());
}
IEnumerable<string> fileNames = files.Select(f => f.Name);
使用IEnumerable<string> fileNames = files.Select(f => f.FullName);获取带路径的文件名。
【解决方案2】:
var dirs = Directory.GetDirectories(myPath).Where(x => x.StartsWith(20160314));
dirs.ForEach(xx => {
var fullPath = Path.Combine(myPath, xx);
var files = Directory.GetFiles(fullPath);
//Files is a string[], do whatever you want
});
您将获得与此日期匹配的所有子目录:20160314。之后,您可以通过将原始路径与目录名组合并使用GetFiles(string path)获取文件名列表来获取文件。