Jaka jest najdłuższa ścieżka do pliku obsługiwana przez system Windows?
Jaka jest najdłuższa ścieżka do pliku obsługiwana przez system Windows?
Odpowiedzi:
Maksymalna długość ścieżki (z MSDN)
W interfejsie API systemu Windows (z pewnymi wyjątkami omówionymi w poniższych akapitach) maksymalna długość ścieżki wynosi MAX_PATH, która jest zdefiniowana jako 260 znaków . Ścieżka lokalna ma następującą kolejność: litera dysku, dwukropek, ukośnik odwrotny, komponenty oddzielone ukośnikami odwrotnymi i kończący znak null. Na przykład maksymalna ścieżka na dysku D to „D: \ <łańcuch ścieżki o długości 256 znaków> <NUL>”, gdzie „<NUL>” reprezentuje niewidoczny kończący znak zerowy dla bieżącej strony kodowej systemu. (Znaki <> są tutaj używane dla przejrzystości wizualnej i nie mogą być częścią prawidłowego ciągu ścieżki.)
Ścieżka do pliku XP - 250 znaków
Ścieżka do pliku Vista - 260 znaków
Najdłuższa ścieżka czystej instalacji systemu Windows XP to 152 znaki.
Najdłuższa ścieżka w częściowo czystej instalacji systemu Windows Vista to 195 znaków:
System Windows XP zezwala na nazwy plików o długości do 255 znaków
Windows Vista pozwala na jeszcze dłuższe nazwy plików zawierające do 260 znaków.
Stała Windows MAX_PATH
jest równa 260, jak mówią inne odpowiedzi, jednak najdłuższa ścieżka to 32767.
Zobacz tutaj .
32k używa UNICODE, ale teraz musimy go użyć, więc powinniśmy również użyć takiej maksymalnej długości ścieżki.
Możesz także zapoznać się z moją odpowiedzią w SO, która wyjaśnia niektóre rzeczy bardziej szczegółowe na temat maksymalnej długości ścieżki.
„Klasyczny” limit wynosi 260 znaków: drive letter
+ :\
+ 255 characters of filename
+ \
(lub do zaokrąglania) + null terminator
jak powiedział w innych odpowiedzi
Jednak prawdziwy wewnętrzny limit to 32767 znaków, który można osiągnąć, dodając, \\?\
aby uzyskać w pełni kwalifikowaną ścieżkę
Interfejs API systemu Windows ma wiele funkcji, które również mają wersje Unicode, co pozwala na ścieżkę o rozszerzonej długości dla maksymalnej całkowitej długości ścieżki wynoszącej 32 767 znaków. Ten typ ścieżki składa się z komponentów oddzielonych ukośnikami odwrotnymi, każdy do wartości zwracanej w
lpMaximumComponentLength
parametrzeGetVolumeInformation
funkcji (ta wartość to zwykle 255 znaków). Aby określić ścieżkę o przedłużonej długości, użyj"\\?\"
prefiksu. Na przykład"\\?\D:\very long path"
.
Jeśli z jakichś powodów nie można użyć w pełni kwalifikowanych ścieżek, można uzyskać dostęp do głębszych katalogów poprzez zamontowanie litery dysku za pomocą subst
/ diskpart
lub utworzenie połączenia / dowiązania symbolicznego w celu skrócenia ścieżki
Od Windows 10 MAX_PATH
limit został również usunięty, chociaż nie jest domyślnie
Począwszy od systemu Windows 10, wersja 1607,
MAX_PATH
ograniczenia zostały usunięte z typowych funkcji plików i katalogów Win32. Musisz jednak wyrazić zgodę na nowe zachowanie.https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file