相关疑难解决方法(0)

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;
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,我继续得到例外.原来,':'不在集合中Path.GetInvalidPathChars(),因为它在路径根中有效.我认为这是有道理的 - 但这必须是一个非常普遍的问题.有没有人有一些消毒路径的短代码?最彻底的我已经想到了这一点,但感觉它可能是矫枉过正.

    // replaces invalid characters with replaceChar
    public static string SanitizePath(string path, char replaceChar)
    {
        // construct a list of characters that can't show up in filenames. …
Run Code Online (Sandbox Code Playgroud)

c# validation invalid-characters path sanitize

159
推荐指数
8
解决办法
8万
查看次数

C#文件路径编码和解码

我正在寻找一种简单的方法来编码/转义和解码/ unescape文件路径(文件路径中的非法字符"\/?:<>*| )

HttpUtiliy.UrlEncode做它的工作,除了它不编码*字符.

我所能找到的只是用正则表达式逃脱,或者只是替换非法的字符 _

我希望能够一致地编码/解码.

我想知道是否有预先定义的方法来做到这一点,或者我只需要编写一些代码进行编码,另一部分需要解码.

谢谢

c# encoding path decoding illegal-characters

0
推荐指数
1
解决办法
4982
查看次数