2011-04-11 16 views
5

Quiero usar funciones de la clase Path (GetDirectoryName, GetFileName, Combine, etc.) con rutas en formato URL con barra (/).Funciones de ruta para URL

Ejemplo de mi camino:

"xxx://server/folder1/folder2/file"

Traté de hacer el trabajo con Path funciones y al final acaba de reemplazar el separador.

He descubierto que la función GetDirectoryName no reemplaza correctamente las barras:

Path.GetDirectoryName(@"xxx://server/folder/file") -> @"xxx:\server\folder"

como se ve una raya vertical se pierde.

¿Cómo puedo hacer que las funciones de ruta utilicen el separador 'alternativo'?

¿Puedo utilizar otra clase con la misma funcionalidad?

Respuesta

5

Tengo miedo GetDirectoryName, GetFileName, Combine, etc. use Path.DirectorySeparatorChar en la definición y desea Path.AltDirectorySeparatorChar.

Y como Path es una clase cerrada, creo que la única manera de hacerlo es la cadena replacement.You puede reemplazar Path.DirectorySeparatorChar ('\') con Path.AltDirectorySeparatorChar ('/') y Path.VolumeSeparatorChar (':'), con ":/"

1

¿Ha considerado usar una combinación de System.Uri, System.UriBuilder y (si es necesario) subclase (s) personalizada System.UriParser?

0

Si el URI es un URI de archivo local del formulario file://whatever, entonces puede llamar al string path = new Uri(whatever).LocalPath y llamar al Path métodos en él. Si no puede garantizar que el Uri está en una ruta local, no puede garantizar que los componentes del Uri correspondan a máquinas, carpetas, archivos, extensiones, directorios de uso, caracteres separadores o cualquier otra cosa.

3

Para GetDirectoryName(), puede utilizar

pageRoot = uri.Remove(uri.LastIndexOf('/') + 1); 
Cuestiones relacionadas