首页 > 解决方案 > 在路径中对具有特定值的文件进行分组 - C#

问题描述

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

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

C:/数据/A/A1/cf/p3.xml

C:/数据/A/A2/p1/p2.xml

C:/数据/A/A2/m1/m2/cdf.xml

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

C:/数据/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#performancelinqfiledirectory-structure

解决方案


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

string path = "C:/Data/A/A";
for (int i = 1; i < 3; i++)
{
    var files = Directory.EnumerateFiles($"{path}{i}", "*.xml", SearchOption.AllDirectories);
    Directory.CreateDirectory($"{path}{i}/new-folder/");
    foreach (var file in files)
    {
        File.Move(file, $"{path}{i}/new-folder/{Path.GetFileName(file)}");
    }
}

推荐阅读