¿Existe un método incorporado en .net para codificar las rutas de archivos de la misma manera que codificaría una url? Por ejemplo, si tengo caracteres ilegales en un nombre de archivo, como "lo que sea: lo que sea", me gustaría que codifique el ":" por lo que aún está allí, solo codificado para que el sistema lo acepte. Me gustaría hacer algo como Path.Encode(fileName)
Codificación de rutas de archivos
¿Algo como esto por ahí?
Esto es lo que estoy haciendo. Estoy raspando wikipedia.org para un juego que he creado en www.wikipediamaze.com. Cuando hago el raspado de la pantalla, almaceno los resultados en un archivo en mi carpeta app_data que coincide con el nombre del tema actual del sitio de wikipedia en el que estoy. Por ejemplo, si estoy en el lugar:
http://www.wikipedia.org/wiki/Kevin_Bacon
Entonces raspe esa página, analizar, limpiarlo, etc., y luego caché en el disco para retireval más rápido después. Se almacena en la ubicación /App_Data/Kevin_Bacon (no file extension)
. Esto funciona muy bien a menos que esté en una página como
http://www.wikipedia.org/wiki/Wikipedia:About
tratando de crear un archivo en /App_Data/Wikipedia:About
, obviamente, no funciona ya que la ':' carácter es ilegal en un nombre de archivo.
ACTUALIZACIÓN
Esto funciona muy bien para mí:
public static string EncodeAsFileName(this string fileName)
{
return Regex.Replace(fileName, "[" + Regex.Escape(
new string(Path.GetInvalidFileNameChars())) + "]", " ");
}
¿Puedo preguntar por qué quieres hacer esto? Puede ayudarnos a mí y a otros a determinar cuál es la solución adecuada. – Lazarus