Какой самый длинный путь к файлу, который может обработать Windows?
4 ответа
Максимальная длина пути (от MSDN)
В Windows API (с некоторыми исключениями, обсуждаемыми в следующих параграфах) максимальная длина пути равна MAX_PATH, которая определяется как 260 символов. Локальный путь структурирован в следующем порядке: буква диска, двоеточие, обратная косая черта, компоненты, разделенные обратной косой чертой, и завершающий нулевой символ. Например, максимальный путь на диске D равен «D:\<строка пути длиной около 256 символов> <NUL>», где «<NUL>» представляет невидимый завершающий нулевой символ для текущей кодовой страницы системы. (Символы <> используются здесь для наглядности и не могут быть частью допустимой строки пути.)
Путь к файлу XP - 250 символов
Путь к файлу Vista - 260 символов
Самый длинный путь при чистой установке Windows XP составляет 152 символа.
Самый длинный путь в полуочищенной установке Windows Vista составляет 195 символов:
Windows XP допускает имена файлов длиной до 255 символов
Windows Vista допускает даже более длинные имена файлов, содержащие до 260 символов.
Константа Windows MAX_PATH
равна 260, как говорят другие ответы, однако самый длинный путь - 32767.
Смотрите здесь.
32k - это использование UNICODE, но теперь мы должны его использовать, поэтому мы должны также использовать такую максимальную длину пути.
Кроме того, вы можете взглянуть на мой ответ в SO, который объясняет некоторые вещи более подробно о максимальной длине пути.
"Классический" предел составляет 260 символов: drive letter
+ :\
+ 255 characters of filename
+ \
(или для округления) + null terminator
как сказано в других ответах
Однако реальный внутренний предел составляет 32767 символов, которые можно получить, добавив \\?\
чтобы получить полный путь
Windows API имеет много функций, которые также имеют версии Unicode, чтобы разрешить путь расширенной длины для максимальной общей длины пути 32 767 символов. Этот тип пути состоит из компонентов , разделенных обратной косой черты, каждый до значения , возвращаемого в параметре
lpMaximumComponentLength
функцииGetVolumeInformation
(это значение обычно 255 символов). Чтобы указать путь расширенной длины, используйте"\\?\"
префикс. Например,"\\?\D:\very long path"
.
Если по каким-либо причинам полные пути не могут быть использованы, то к более глубоким каталогам можно обратиться, подключив их к букве диска с помощью subst
/diskpart
или создав соединение/символическую ссылку для сокращения пути.
Начиная с Windows 10 предел MAX_PATH
также был удален, хотя не по умолчанию
Начиная с Windows 10 версии 1607 ограничения
MAX_PATH
были удалены из общих функций файлов и каталогов Win32. Тем не менее, вы должны подписаться на новое поведение.https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file