Quel est le plus long chemin de fichier que Windows peut gérer?

57

Quel est le plus long chemin de fichier que Windows peut gérer?

Ron Tuffin
la source

Réponses:

48

Longueur maximale du chemin (à partir de MSDN)

Dans l'API Windows (à quelques exceptions près décrites dans les paragraphes suivants), la longueur maximale d'un chemin est MAX_PATH, définie à 260 caractères . Un chemin local est structuré dans l'ordre suivant: lettre de lecteur, deux points, barre oblique inverse, composants séparés par des barres obliques inverses et un caractère nul de fin. Par exemple, le chemin maximal sur le lecteur D est "D: \ <une chaîne de chemin de 256 caractères> <NUL>", où "<NUL>" représente le caractère nul de fin invisible pour la page de codes système actuelle. (Les caractères <> sont utilisés ici pour la clarté visuelle et ne peuvent pas faire partie d'une chaîne de chemin valide.)

Adam Matan
la source
4
Vous devriez mentionner que vous pouvez gérer les chemins qui dépassent cette limite en le préfixant par «\\?» (Je pense que c'était cette séquence de caractères).
Joey
3
vous devriez également indiquer la limite pour les chemins unicode mentionnés dans le 2ème paragraphe: ~ 32k
akira
260? 256 caractères ignorant lecteur: \ et terminateur. Nous sommes en 2009, pourquoi ne disposons-nous que d'un octet de personnages avec lesquels jouer?
Phoshi
@Phoshi Les systèmes d'exploitation utilisant des chemins d'accès plus longs ne sont pas utilisés par défaut par le système d'exploitation, car la transmission de chaînes arbitrairement longues à des applications mal écrites par des développeurs sachant que le chemin ne pouvait jamais dépasser 260 caractères et a décidé d'attribuer une longueur fixe. Le stockage de la matrice entraînerait un grand nombre de dépassements de mémoire tampon, ce qui entraînerait le blocage et / ou l'exploitation des applications. Des implémentations légèrement meilleures de développeurs avec la même mauvaise connaissance seraient abandonnées, car la validation de leur chemin signalait une erreur trop longue.
Dan Neely
15

Chemin du fichier XP - 250 caractères

Chemin du fichier Vista - 260 caractères

Le chemin le plus long sur une nouvelle installation de Windows XP est de 152 caractères.

Le chemin le plus long sur une installation semi-propre de Windows Vista est de 195 caractères:

Windows XP autorise les noms de fichier jusqu'à 255 caractères

Windows Vista autorise des noms de fichiers encore plus longs contenant jusqu'à 260 caractères.

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

Joe
la source
5
c'est tout simplement vrai si vous n'utilisez pas l'api unicode, qui étend la limite un peu (~ 32k, voir msdn.microsoft.com/en-us/library/… )
akira le
1
hmmm. à ce rythme, la limite dans Win7 devrait être d'environ 265 caractères, non?
Quack Quichotte
Pourquoi augmenteraient-ils la limite de dix caractères? Ne semble pas en valoir la peine, fait-il: \
Phoshi
Ceci est une erreur. La longueur maximale du nom de fichier est toujours de 255 caractères dans Windows, car c'est la limite NTFS
phuclv
8

La constante Windows MAX_PATHest égale à 260 comme l’indiquent d’autres réponses. Cependant, le plus long chemin réel est 32767.

Voir ici .

32k est en utilisant UNICODE, mais maintenant nous devons l’utiliser, nous devrions donc aussi utiliser cette longueur de chemin maximale.

Vous pouvez également consulter ma réponse dans SO, qui explique certaines choses plus détaillées sur la longueur maximale du chemin.

ST3
la source
1

La limite "classique" est de 260 caractères: drive letter+ :\+ 255 characters of filename+ \(ou pour arrondir) + null terminatorcomme indiqué dans les autres réponses

Cependant, la limite interne réelle est de 32 767 caractères, ce qui peut être obtenu en ajoutant \\?\un chemin qualifié complet.

L'API Windows possède de nombreuses fonctions qui comportent également des versions Unicode permettant un chemin d'accès étendu pour une longueur totale maximale de 32 767 caractères. Ce type de chemin est composé de composants séparés par des barres obliques inverses, chacune jusqu’à la valeur renvoyée dans le lpMaximumComponentLengthparamètre de la GetVolumeInformationfonction (cette valeur est généralement de 255 caractères). Pour spécifier un chemin de longueur étendue, utilisez le "\\?\"préfixe. Par exemple, "\\?\D:\very long path".

Si, pour une raison quelconque, les chemins d'accès entièrement qualifiés ne peuvent pas être utilisés, vous pouvez accéder à des répertoires plus profonds en les fixant à une lettre de lecteur avec subst/ diskpartou en créant une jonction / un lien symbolique pour raccourcir le chemin.

Depuis Windows 10, la MAX_PATHlimite a également été supprimée, mais pas par défaut.

À partir de Windows 10, version 1607, les MAX_PATHlimitations ont été supprimées des fonctions de fichier et de répertoire Win32 courantes. Cependant, vous devez accepter le nouveau comportement.

https://docs.microsoft.com/en-us/windows/desktop/FileIO/naming-a-file

phuclv
la source