将文件排序到目录

时间:2019-07-09 06:34:04

标签: c# file directory

我有任务将文件分类到目录中。

我有以下文件:

AA12.txt
AA34.txt
AA56.txt
BB12.txt
BB34.txt
etc.

我需要创建一个函数,该函数将根据前两个字母创建目录并在其中复制对应的文件。
因此,将存在具有文件AA12,AA34,AA56的目录AA和具有文件BB12,BB34等的目录BB。

AA
 |- AA12
 |- AA34
 |- AA56

BB
 |- BB12
 |- BB34

我正在考虑只手动创建所有目录,然后复制文件。

string directoryPath = @"C:\\AA";
if (!Directory.Exists(directoryPath))
{
    Directory.CreateDirectory(directoryPath);
}

但是,有没有更优雅,更自动化的方式来做这样的事情? 谢谢

2 个答案:

答案 0 :(得分:0)

感谢@Mong Zhu指出完整路径问题,请尝试以下方法:

string path = ".";
foreach (string file in Directory.GetFiles(path))
{
    string fileName = Path.GetFileName(file);
    string dirfileName = fileName.Substring(0, 2);
    if (!Directory.Exists(dirfileName))
    {
        Directory.CreateDirectory(dirfileName);
    }

    File.Copy(path + "\\" + fileName, path + "\\" +dirfileName + "\\" + fileName);
}

答案 1 :(得分:0)

感谢Sohaib Jundi,我找到了解决方案,我这样做是这样的:

string path = @"C:\\";
string destination = @"E:\\";
foreach (string fileName in Directory.GetFiles(path))
        {
            string onlyFileName = Path.GetFileName(fileName);
            string dirName = onlyFileName.Substring(0, 2);
            string dirPath = $@"{destination}\{dirName}";
            if (!Directory.Exists(dirPath))
            {
                Directory.CreateDirectory(dirPath);
            }

            File.Copy(fileName, $@"{dirPath}\{onlyFileName}");
        }

感谢Sohaib Jundi的帮助,希望有人会发现它有用。