2011-01-12 6 views
6

Duplicar posible:
Why does the 260 character path length limit exist in Windows?C#: ¿Hay alguna forma de evitar el límite de 260 caracteres de una ruta completa?

Estoy tratando de encontrar una manera de evitar esto temía 260 caracteres límite de ruta de acceso completa y al mismo tiempo me pregunto por qué demonios ¿hay un límite de ruta para comenzar? Sé que para algunas personas 260 parece ser "mucho", pero realmente no lo es desde que me encontré con este problema.

Básicamente:
¿Por qué debe haber un límite de caracteres?
¿Cómo se puede evitar?

+0

Es un límite del sistema operativo. –

+0

¿Has oído hablar de Twitter? Tiene un límite de 140 caracteres. Esa es una de las razones del creciente interés en los acortadores de URL como Bitly. – DOK

Respuesta

11

Utilice el \\?\ prefijo UNC para salir del "modo DOS" para las rutas. La longitud máxima para las rutas UNC es de 32k caracteres.

Más información aquí: http://msdn.microsoft.com/en-us/library/aa365247.aspx

+1

"\\? \" No lo convierte en UNC, \\? \ Admite UNC. –

+0

Cada componente (\ ... \) tiene un límite de valor 'lpMaximumComponentLength' (de la función' GetVolumeInformation'). – n00dles

+0

¿Hay alguna manera de solucionar este límite de componente, para permitir que cada componente sea más largo que ese límite especificado, por ejemplo, 255 caracteres por defecto? – Swtsvn

1

Bueno, en primer lugar, esto no tiene nada que ver con C#, en particular, y mucho que ver con la API de Windows, en donde reside ese límite. :)

Tome un vistazo a this question y sus respuestas, que le llevará a MSDN: Naming Files, Paths, and Namespaces

rutas de archivos Unicode (descritos en las respuestas a la pregunta, y el artículo de MSDN) puede ser en forma de solución, con algunas advertencias.

8

Desde el MSDN:

La API de Windows tiene muchas funciones que también tienen versiones Unicode para permitir un camino de longitud extendida para una longitud de recorrido total máxima de 32.767 caracteres. Este tipo de ruta se compone de componentes separados por barras invertidas, cada uno hasta el valor devuelto en el parámetro lpMaximumComponentLength de la función GetVolumeInformation (este valor suele tener 255 caracteres). Para especificar una ruta de longitud extendida, use el prefijo "\\?\". Por ejemplo, "\\?\D:\very long path".

Cuestiones relacionadas