C#清理文件名
最近,我一直在将一堆MP3从不同位置移到存储库中。我一直在使用ID3标签构建新文件名(感谢TagLib-Sharp!),我注意到我得到了System.NotSupportedException: “不支持给定路径的格式。” 这是由File.Copy()或生成的Directory.CreateDirectory()。 很快,我就意识到需要对我的文件名进行清理。所以我做了显而易见的事情: public static string SanitizePath_(string path, char replaceChar) { string dir = Path.GetDirectoryName(path); foreach (char c in Path.GetInvalidPathChars()) dir = dir.Replace(c, replaceChar); string name = Path.GetFileName(path); foreach (char c in Path.GetInvalidFileNameChars()) name = name.Replace(c, replaceChar); return dir + name; } 令我惊讶的是,我继续遇到例外。原来,':'不在的集合中Path.GetInvalidPathChars(),因为它在路径根目录中有效。我认为这很有意义-但这必须是一个非常普遍的问题。有人有一些简短的代码可以清理路径吗?我想出了最彻底的方法,但是感觉可能已经过头了。 // replaces invalid characters with replaceChar …