2011-01-12 7 views
6

Powiel możliwe:
Why does the 260 character path length limit exist in Windows?C#: Jakikolwiek sposób obejść limit 260 znaków w pełni kwalifikowanej ścieżki?

staram się wymyślić sposób, aby obejść ten bał 260 charakter w pełni kwalifikowana ścieżka graniczna i jednocześnie zastanawiam się, dlaczego do cholery czy istnieje ograniczenie ścieżki !? Wiem, że niektórzy ludzie wydają się być "dużo", ale tak naprawdę nie jest, ponieważ wpadłem na ten problem.

Zasadniczo:
Dlaczego musi być limit znaków?
Jak się obejść?

+0

Jest to limit systemu operacyjnego. –

+0

Słyszałeś o Twitterze? Ma limit 140 znaków. To jeden z powodów wzrostu zainteresowania skrótami URL, takimi jak Bitly. – DOK

Odpowiedz

11

Użyj przedrostka UNC \\?\, aby wykluczyć tryb "DOS" dla ścieżek. Maksymalna długość ścieżek UNC to 32k znaków.

Więcej informacji tutaj: http://msdn.microsoft.com/en-us/library/aa365247.aspx

+1

"\\? \" Nie czyni z niego UNC, \\? \ Obsługuje UNC. –

+0

Każdy składnik (\ ... \) ma limit wartości 'lpMaximumComponentLength' (z funkcji" GetVolumeInformation "). – n00dles

+0

Czy istnieje sposób na obejście tego limitu składników, aby każdy komponent był dłuższy niż określony limit, na przykład domyślne 255 znaków? – Swtsvn

1

Cóż, po pierwsze, to nie ma nic wspólnego z C# w szczególności i wszystko zrobić z Windows API, w którym zamieszkuje, że granica. :)

Spójrz na this question i odpowiedziach, który doprowadzi Cię do MSDN: Naming Files, Paths, and Namespaces

ścieżki plików Unicode (opisane w odpowiedzi na pytanie, a artykuł MSDN) może być w postaci roztworu, z pewne zastrzeżenia.

8

Z MSDN:

API Windows ma wiele funkcji, które również mają wersje Unicode, aby umożliwić ścieżkę rozszerzonym długości do maksymalnej łącznej długości drogi 32,767 znaków. Ten typ ścieżki składa się z komponentów oddzielonych przez ukośniki odwrotne, każdy do wartości zwróconej w parametrze lpMaximumComponentLength funkcji GetVolumeInformation (ta wartość jest zwykle 255 znaków). Aby określić ścieżkę o dużej długości, użyj prefiksu "\\?\". Na przykład "\\?\D:\very long path".

Powiązane problemy