Je conçois une table de base de données qui contiendra les noms de fichiers des fichiers téléchargés. Quelle est la longueur maximale d'un nom de fichier dans NTFS tel qu'utilisé par Windows XP ou Vista?
windows-vista
windows-xp
ntfs
filenames
name-length
GateKiller
la source
la source
Réponses:
Les composants individuels d'un nom de fichier (c'est-à-dire chaque sous-répertoire le long du chemin et le nom de fichier final) sont limités à 255 caractères, et la longueur totale du chemin est limitée à environ 32 000 caractères.
Cependant, sous Windows, vous ne pouvez pas dépasser la
MAX_PATH
valeur (259 caractères pour les fichiers, 248 pour les dossiers). Voirhttp://msdn.microsoft.com/en-us/library/aa365247.aspx pour plus de détails.la source
C'est 257 caractères. Pour être précis: NTFS lui-même impose une longueur maximale de nom de fichier de plusieurs milliers de caractères (environ 30'000 quelque chose). Toutefois, Windows impose une longueur maximale de 260 pour le chemin d'accès + nom de fichier. Le dossier lecteur + contient au moins 3 caractères, vous vous retrouvez donc avec 257.
la source
Voici ce que dit "l'exception non gérée" sur le framework 4.5 lorsque vous essayez d'enregistrer un fichier avec un nom de fichier long:
la source
199 sur Windows XP NTFS, je viens de vérifier.
Ce n'est pas de la théorie, mais simplement d'essayer mon ordinateur portable. Il peut y avoir des effets atténuants, mais physiquement, cela ne me permettra pas de l'agrandir.
Y a-t-il un autre paramètre qui limite cela, je me demande? Essayez-le par vous-même.
la source
w
, supprimé cela et créé un dossier avec le même nom sur Windows 7 x64. Maintenant, la question est quel est le facteur limitant ici: la version NTFS, le système d'exploitation ou le sous-système ou l'API Win32 dans XP?Selon MSDN , c'est 260 caractères. Il inclut
"<NUL>"
le caractère nul de terminaison invisible, de sorte que la longueur réelle est de 259.Mais lisez l'article, c'est un peu plus compliqué.
la source
\\?\
préfixe requis au moment de l'exécution à une longueur non spécifiée. Le chemin d'accès doit rester inférieur à 32 767 octets après cette expansion.La longueur dans NTFS est 255. Le
NameLength
champ dans l'$Filename
attribut NTFS est un octet sans décalage; cela donne une plage de 0 à 255.Le nom de fichier iself peut se trouver dans différents "espaces de noms". Jusqu'à présent, il existe: POSIX, WIN32, DOS et (WIN32DOS - lorsqu'un nom de fichier peut être nativement un nom DOS). (Étant donné que la chaîne a une longueur, elle pourrait contenir \ 0 mais cela entraînerait des problèmes et ne se trouve pas dans les espaces de noms ci-dessus.)
Ainsi, le nom d'un fichier ou d'un répertoire peut contenir jusqu'à 255 caractères. Lorsque vous spécifiez le chemin complet sous Windows, vous devez préfixer le chemin avec \\? \ (Ou utiliser \\? \ UNC \ server \ share pour les chemins UNC) pour marquer ce chemin comme un chemin de longueur étendue (~ 32 000 caractères) . Si votre chemin est plus long, vous devrez définir votre répertoire de travail en cours de route (ugh - effets secondaires dus au paramètre à l'échelle du processus).
la source
255 caractères.
http://en.wikipedia.org/wiki/Filename
la source
J'ajoute ceci à la réponse approuvée ci-dessus.
POUR ÊTRE CLAIR, la raison pour laquelle les gens pensent qu'il s'agit de 255 à 260 caractères est que c'est tout ce que Windows Explorer prend en charge. Cela entraînera une erreur en faisant quelque chose comme une copie de fichier sur des noms de fichiers plus longs que cela. Cependant, un programme peut lire et écrire des noms de fichiers beaucoup plus longs (c'est ainsi que vous obtenez des longueurs dont Explorer se plaint en premier lieu). La «solution recommandée» de Microsoft dans des situations comme celle-ci consiste à ouvrir le fichier dans le programme d'origine qui l'a écrit et à le renommer.
la source
Selon la nouvelle documentation du SDK Windows (8.0), il semble qu'une nouvelle limite de chemin soit fournie. Il existe un nouvel ensemble de fonctions de gestion de chemin et une définition de PATHCCH_MAX_CCH comme suit:
la source
Cette partie de la documentation officielle indique clairement qu'il s'agit de 255 caractères Unicode pour NTFS, exFAT et FAT32 et 127 Unicode ou 254 caractères ASCII pour UDF.
En dehors de cela, la longueur maximale du nom de chemin est toujours de 32 760 caractères Unicode, chaque composant de chemin ne dépassant pas 255 caractères.
la source
WCHAR
éléments. Non, ce n'est pas des "caractères Unicode" (vérifiez votre terminologie Unicode: points de code, caractères etc ...!).255 caractères, bien que le chemin complet ne devrait pas être plus long que cela. Il y a un joli tableau sur Wikipedia à ce sujet: http://en.wikipedia.org/wiki/Filename .
la source
238! Je l'ai vérifié sous Win7 32 bits avec le script bat suivant:
la source
w
). Et maintenant?En fait, il est de 256, voir Comparaison des fonctionnalités du système de fichiers, limites .
Pour répéter un message sur http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html
Si vous lisez les articles ci-dessus, vous verrez qu'il y a une 5ème chose dont vous pouvez être certain: trouver au moins un utilisateur d'ordinateur obstiné!
la source
Je ne peux pas créer un fichier avec le nom + période + extension dans WS 2012 Explorer plus de 224 caractères. Ne tirez pas sur le messager!
Dans le CMD du même serveur, je ne peux pas créer un nom de plus de 235 caractères:
Le fichier avec un nom de 224 caractères créé dans l'Explorateur ne peut pas être ouvert dans Notepad ++ - il vient juste avec un nouveau fichier à la place.
la source
The system cannot find the path specified.
n'est pas le même queThe specified path, file name, or both are too long.
. Je suppose que vous aviez une faute de frappe ou quelque chose. Vous obtenez ce message si vous essayez de créer un fichier dans un chemin qui n'existe pas ou si vous souhaitez vous déplacer dans une direction qui n'existe pas.