1

我正在尝试递归地创建一堆目录,并且某些目录名称具有“:”字符,其中会引发上述异常。我希望有办法避免这种情况?下面是我正在使用的代码片段:

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"

非常感谢 :)

4

1 回答 1

1

冒号是您不能使用的字符之一,但您可以很容易地替换它。为了确保您只替换文件名部分中的字符(这样您就不会清除构成文件路径其余部分的反斜杠),您可以使用:

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

假设文件名中可能存在其他非法字符(请参阅此列表),您将需要更健壮的内容,例如 Regex 语句。

于 2011-09-14T23:45:31.917 回答