我正在尝试以递归方式创建一堆目录,并且某些目录名称包含“:”字符,其中会抛出上述异常。我希望有可能有办法避免这种情况吗? 下面是我正在使用的代码片段:
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”
非常感谢:)
答案 0 :(得分:1)
冒号是你不能使用的那些角色之一,但你可以轻松地替换它。还要确保只替换文件名部分中的字符(这样就不会消除组成文件路径其余部分的反斜杠),您可以使用:
Path.Combine(Path.GetDirectoryName(TargetFullPath),Path.GetFileName(TargetFullPath).Replace(":","_"));
假设文件名中可能存在其他非法字符(see this list),您将需要像Regex语句一样更健壮的字符。