Який найдовший шлях до файлів, з яким може працювати Windows?


Відповіді:


48

Максимальна довжина шляху (від MSDN)

В API Windows (за деякими винятками, що обговорюються в наступних параграфах), максимальна довжина шляху - MAX_PATH, яка визначається як 260 символів . Локальний шлях структурований у такому порядку: літера диска, двокрапка, зворотний кут, компоненти, розділені косою рисою, та закінчуючий нульовий символ. Наприклад, максимальний шлях на диску D є "D: \ <деякий рядок шляху 256 символів> <NUL>", де "<NUL>" являє собою невидимий завершальний нульовий символ для поточної системної кодової сторінки. (Символи <> використовуються тут для наочності чіткості і не можуть бути частиною допустимого рядка шляху.)


4
Ви повинні згадати, що ви можете обробляти шляхи, що перевищують цю межу, префіксуючи її "\\?" (Я думаю, це була така послідовність символів).
Joey

3
ви також повинні вказати обмеження для unicode-контурів, згадане у другому абзаці: ~ 32k
akira

260? 256 символів ігноруючи диск: \ та термінатор. Це 2009 рік, чому ми маємо лише байт персонажів, щоб пограти?
Phoshi

@Phoshi API для використання довших шляхів не використовуються ОС за замовчуванням, оскільки передача в довільно довгих рядках до програм, які погано написані розробниками, які знали, що шлях ніколи не може бути довше 260 символів і вирішили виділити фіксовану довжину масив для його утримання призведе до величезної кількості переповнення буфера, що призводить до збоїв та / або експлуатації програм. Трохи кращі втілення розробниками з такими ж недостовірними знаннями перервали б, оскільки перевірка їх шляху повідомила про занадто довгу помилку.
Ден Нелі

15

Шлях файлу XP - 250 символів

Шлях файлу Vista - 260 символів

Найдовший шлях до чистої установки Windows XP - 152 символи.

Найдовший шлях для напівчистої установки Windows Vista - 195 символів:

Windows XP дозволяє назви файлів довжиною до 255 символів

Windows Vista дозволяє ще довші імена файлів, що містять до 260 символів.

http://www.codinghorror.com/blog/archives/000729.html


5
це справедливо, якщо ви не використовуєте unicode-api, який трохи розширює ліміт (~ 32k, див. msdn.microsoft.com/en-us/library/… )
akira

1
хммм. при цьому швидкість в Win7 повинна становити близько 265 символів, ні?
шарлатаний кіхот

Чому вони збільшать ліміт на десять символів? Здається, не варто, чи це: \
Phoshi

це неправильно. Максимальна довжина імені файлу все ще становить 255 символів у будь-якій Windows, оскільки це обмеження NTFS
phuclv

8

Константа Windows MAX_PATHдорівнює 260, як говорять інші відповіді, однак, реальний найдовший шлях - 32767.

Дивіться тут .

32k використовує UNICODE, але тепер ми маємо його використовувати, тому ми також повинні використовувати таку максимальну довжину шляху.

Крім того, ви можете ознайомитися з моєю відповіддю в ТА, де пояснюються деякі деталі щодо максимальної довжини шляху.


1

«Класичний» межа 260 символів: drive letter+ :\+ 255 characters of filename+ \(або для округлення) + , null terminatorяк сказано в інших відповідях

Однак реальний внутрішній ліміт - 32767 символів, який можна досягти, додавши \\?\для отримання повністю кваліфікований шлях

API Windows має багато функцій, які також мають версії 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.