Избежание исключения NotSupportedException с помощью CreateDirectory в c # - PullRequest
1 голос
/ 15 сентября 2011

Я пытаюсь рекурсивно создать группу каталогов, и некоторые имена каталогов имеют символы ':', в которых выдается указанное выше исключение. Я надеялся, что может быть способ избежать этого? Ниже приведен фрагмент кода, который я использую:

foreach (TagLib.File tagFile in tagFiles)
        {
            GetInfo(tagFile, targetDir);

            if (!Directory.Exists(TargetFullPath))
            {
                Directory.CreateDirectory(TargetFullPath);
                System.IO.File.Copy(FilePath, TargetFullPath + "\\" + tagFile.Tag.Title + TargetExt);
            } ...

Где 'TargetFullPath' = "G: \ Users \ Jon \ Desktop \ musictest \ Journey \ Journey: Greatest Hits"

Большое спасибо:)

1 Ответ

1 голос
/ 15 сентября 2011

Двоеточие - это один из тех символов, который вы просто не можете использовать, но вы можете заменить его достаточно легко. Чтобы также убедиться, что вы заменяете только символы в части имени файла (чтобы вы не стирали обратную косую черту, составляющую остальную часть пути к файлу), вы можете использовать:

Path.Combine(Path.GetDirectoryName(TargetFullPath),Path.GetFileName(TargetFullPath).Replace(":","_"));

Если предположить, что в имени файла могут быть другие недопустимые символы ( см. Этот список ), вам понадобится что-то более надежное, например, выражение Regex.

...