Есть ли встроенный метод в .net для кодирования пути к файлу таким же образом, как вы кодируете URL-адрес? Например, если у меня есть недопустимые символы в имени файла, например "что угодно: что угодно", я бы хотел, чтобы он кодировал ":", поэтому он все еще там, просто закодирован, чтобы система его приняла. Я хотел бы сделать что-то вроде Path.Encode(fileName)
Что-нибудь вроде этого?
Вот что я делаю. Я соскабливаю wikipedia.org для игры, которую я создал в 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())) + "]", " ");
}