c# - 在路径中对具有特定值的文件进行分组 - 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 文件。处理这个的有效方法是什么?
解决方案
注意它需要循环多少次,或者检查目录是否存在
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)}");
}
}
推荐阅读
- python-3.x - 无法从另一个源文件夹导入 Cython 模块
- php - 尝试将其从图像更改为按钮,当我将其更改为看起来像按钮时,我失去了功能
- c++ - 将最后 N 个字节移动到数组开头的最快方法?
- performance - 并行 Julia 代码的性能问题
- batch-file - 批处理文件(cmd):删除目录名称中的最后一个“\”
- c# - 如何获取当前Windows登录用户全名而不是域名
- database - 烧瓶中的primary_key,可为空且唯一的意外参数?
- python - 让 pip 为位于本地的包找到正确的平台
- javascript - 如何在 Chrome 的网络选项卡中格式化 json?
- php - 使用存储库模式在 laravel 中使用“键”、“值”结构处理存储在数据库中的网站全局数据的最佳方法