.net 中是否有内置方法可以像编码 url 一样对文件路径进行编码?例如,如果我的文件名中有非法字符,例如“whatever:whatever”,我希望它对“:”进行编码,这样它仍然存在,只是进行编码以便系统接受它。我想做类似的事情Path.Encode(fileName)
外面有这样的事吗?
这就是我正在做的事情。我正在 wikipedia.org 上抓取我创建的游戏www.wikipediamaze.com http://www.wikipediamaze.com。当我进行屏幕抓取时,我将结果缓存在 app_data 文件夹中的一个文件中,该文件与我所在的维基百科站点的当前主题的名称相匹配。例如,如果我在以下位置:
http://www.wikipedia.org/wiki/Kevin_Bacon
然后我抓取该页面,解析它,清理它等等,然后缓存在磁盘上以便稍后更快地退出。它被存储在该位置/App_Data/Kevin_Bacon (no file extension)
。这很有效,除非我在这样的页面上
http://www.wikipedia.org/wiki/Wikipedia:About
尝试创建一个文件/App_Data/Wikipedia:About
显然不起作用,因为“:”字符在文件名中是非法的。
UPDATE
这对我来说非常有用:
public static string EncodeAsFileName(this string fileName)
{
return Regex.Replace(fileName, "[" + Regex.Escape(
new string(Path.GetInvalidFileNameChars())) + "]", " ");
}
是否为无效字符:\ / : ? ”|
您只需要使用 GetInvalidFileNameChars 函数:
(http://msdn.microsoft.com/library/system.io.path.getinvalidfilenamechars.aspx http://msdn.microsoft.com/library/system.io.path.getinvalidfilenamechars.aspx)
string sanitizedString = Regex.Replace("Wikipedia:About", "[" + Regex.Escape(new string(Path.GetInvalidFileNameChars())) + "]", "_");
所有无效字符都将替换为 _(下划线)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)