Сортировка файлов в каталогах - PullRequest
0 голосов
/ 09 июля 2019

У меня есть задача сортировать файлы в каталогах.

У меня есть файлы вроде:

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

И мне нужно создать функцию, которая создаст каталог на основе первогодве буквы и скопируйте туда соответствующие файлы.
Таким образом, будет каталог AA с файлами AA12, AA34, AA56 и каталог BB с файлами BB12, BB34 и т. д.

AA
 |- AA12
 |- AA34
 |- AA56

BB
 |- BB12
 |- BB34

Я былдумать о том, чтобы просто создать все каталоги вручную, а затем скопировать файлы.

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

Но есть ли более элегантный и автоматизированный способ сделать что-то подобное?Спасибо

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Благодаря Сохаибу Джунди я пришел к решению и сделал это следующим образом:

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}");
        }

Спасибо Сохаибу Джунди за помощь и, надеюсь, кто-нибудь найдет это полезным.

0 голосов
/ 09 июля 2019

Спасибо за @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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...