Как перемещать файлы, создавая их папки. Directory.Method и т. Д. - PullRequest
0 голосов
/ 03 сентября 2018

Я нашел сообщение об этом на Python, но не смог "конвертировать" его ...

Так что у меня уже есть это:

    if (Directory.GetFiles(sourcePath, "*_Items_*.pdf").Any())
    {
        string[] pdfFiles = Directory.GetFiles(sourcePath, "*_Items_*.pdf");
        foreach (string path in pdfFiles)
        {
            file = Path.GetFileName(path);
            subString = file.Substring(0, 8);
            Directory.CreateDirectory(Path.Combine(targetPath, subString));
        } 
    }

Итак, в коде я вынимаю буквы из файлов и создаю папки с этими подстроками. Как мне также переместить эти файлы непосредственно в их папку, созданную с их подстрокой?

Если еще, потому что я делаю сообщение "Список элементов не найден", когда нет файлов.

Спасибо за помощь, спасибо.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Существует 2 метода FileInfo.MoveTo () против File.Move () для использования.

Код может быть похож на LINQ: создайте каталог для каждого файла после проверки, если папка уже существует. Затем перейдите в созданную новую папку

var files = Directory.GetFiles(sourcePath, "*_Items_*.pdf").ToList();

files.ForEach(f => {
    var fileInfo = new FileInfo(f);
    var pathName= fileInfo.Name.Substring(0, 8);

    var directoryInfo = new DirectoryInfo(Path.Combine(targetPath, pathName));
    if(!directoryInfo.Exists)
       directoryInfo.Create();

    fileInfo.MoveTo(Path.Combine(directoryInfo.FullName, fileInfo.Name); // think about if file already exist

})
0 голосов
/ 03 сентября 2018

Я думаю, вы можете просто использовать File.Move для перемещения файла.

foreach (string path in pdfFiles)
{
    file = Path.GetFileName(path);
    subString = file.Substring(0, 8);
    var targetFolder = Path.Combine(targetPath, subString);
    Directory.CreateDirectory(targetFolder);
    // Move the file into the created folder
    File.Move(path, Path.Combine(targetFolder, file));
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...