将路径中具有特定值的文件分组-C#

问题描述 投票:-1回答:1

我正在创建Windows应用程序(C#)以构造文件夹中的某些文件。我的文件夹结构就像

C:/Data/A/A1/d5/data/abc.xml

C:/Data/A/A1/cf/p3.xml

C:/Data/A/A2/p1/p2.xml

C:/Data/A/A2/m1/m2/cdf.xml

C:/Data/A/A3/c1/e1/Data/abc.xml

C:/Data/A/A3/ABC/cdf.xml

string path = "C:/Data/";

DirectoryInfo directory = new DirectoryInfo(Path);

FileInfo[] files = directory.GetFiles("*.xml", SearchOption.AllDirectories);

我希望获得A1,A2,A3文件夹。

我的意图是在A1,A2,A3下创建一个新文件夹,并将所有XML移到那里。如何在路径中的模式后获取特定的文件夹名称。我在文件数组中有超过一千个xml文件。处理此问题的有效方法是什么?

c# performance linq file directory-structure
1个回答
0
投票

您可以执行以下操作:

string path = @"d:\Data\A\";

foreach(var dir in Directory.GetDirectories(path))
{
    var files = Directory.EnumerateFiles(dir, "*.xml*", SearchOption.AllDirectories).ToList();
    var newDir = Path.Combine(dir, "YourNewFolederName");

    if (!Directory.Exists(newDir))
        Directory.CreateDirectory(newDir);

    files.ForEach(a => File.Copy(a, Path.Combine(newDir, Path.GetFileName(a)), true));
}

祝你好运。>>


0
投票

请注意它需要循环多少次,或者检查目录是否存在

© www.soinside.com 2019 - 2024. All rights reserved.