在c#中使用CreateDirectory避免NotSupportedException

时间:2011-09-14 23:42:17

标签: c# notsupportedexception

我正在尝试以递归方式创建一堆目录,并且某些目录名称包含“:”字符,其中会抛出上述异常。我希望有可能有办法避免这种情况吗? 下面是我正在使用的代码片段:

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 个答案:

答案 0 :(得分:1)

冒号是你不能使用的那些角色之一,但你可以轻松地替换它。还要确保只替换文件名部分中的字符(这样就不会消除组成文件路径其余部分的反斜杠),您可以使用:

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

假设文件名中可能存在其他非法字符(see this list),您将需要像Regex语句一样更健壮的字符。