Longueur maximale du nom de fichier dans NTFS (Windows XP et Windows Vista)?

Je conçois une table de firebase database qui contiendra les noms de fichiers des fichiers téléchargés. Quelle est la longueur maximale d’un nom de fichier dans NTFS utilisé par Windows XP ou Vista?

Les composants individuels d’un nom de fichier (c.-à-d. 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, vous devriez généralement essayer de limiter les longueurs de chemin au-dessous de 260 caractères ( MAX_PATH ) si possible. Voir http://msdn.microsoft.com/en-us/library/aa365247.aspx pour plus de détails.

C’est 257 caractères. Pour être précis: NTFS lui-même impose une longueur de nom de fichier maximale de plusieurs milliers de caractères (environ 30 000). Toutefois, Windows impose une longueur maximale de 260 pour le nom de fichier Path +. Le lecteur + dossier prend au moins 3 caractères, donc vous vous retrouvez avec 257.

A obtenu ceci sur framework 4.5 quand essayé de sauvegarder le fichier.

Exception lancée

199 sur Windows XP NTFS, je viens de vérifier.

Ce n’est pas de la théorie mais de simplement essayer mon portable. Il peut y avoir des effets atténuants, mais physiquement, cela ne me permettra pas de l’agrandir.

Y at-il un autre paramètre limitant cela, je me demande? Essayez-le vous-même.

Selon MSDN , ce sont 260 caractères. Il inclut "" – 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 longueur dans NTFS est 255. Le champ NameLength dans l’atsortingbut NTFS $Filename est un octet sans décalage; Cela donne une plage de 0-255.

Le nom de fichier peut être lui-même 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). (Comme la chaîne a une longueur, elle pourrait contenir \ 0 mais cela céderait aux 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 comporter jusqu’à 255 caractères. Lorsque vous spécifiez le chemin d’access complet sous Windows, vous devez préfixer le chemin avec \\? \ (Ou utiliser \\? \ UNC \ server \ share pour les chemins UNC) pour marquer ce chemin comme une longueur étendue (environ 32k caractères) . Si votre chemin est plus long, vous devrez définir votre répertoire de travail en cours de route (effets secondaires dus au réglage du processus).

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 due au fait que c’est tout ce que Windows Explorer prend en charge. Il serait impossible de faire quelque chose comme une copie de fichier sur les noms de fichiers plus longs que cela. Cependant, un programme peut lire et écrire des noms de fichiers beaucoup plus longs (ce qui explique comment Explorer se plaint en premier lieu). Le “correctif recommandé” de Microsoft dans des situations comme celle-ci consiste à ouvrir le fichier dans le programme d’origine qui l’a écrit et à le renommer.

Selon la nouvelle documentation du SDK Windows (8.0), il semble qu’une nouvelle limite de chemin d’access soit fournie. Il existe un nouvel ensemble de fonctions de gestion des chemins et une définition de PATHCCH_MAX_CCH comme suit:

 // max # of characters we support using the "\\?\" syntax // (0x7FFF + 1 for NULL terminator) #define PATHCCH_MAX_CCH 0x8000 

255 caractères, bien que le chemin complet ne soit pas plus long que cela. Il y a une belle table sur Wikipedia à ce sujet: http://en.wikipedia.org/wiki/Filename .

Cette partie de la documentation officielle indique clairement que ce sont 255 caractères Unicode pour NTFS, exFAT et FAT32 et 127 caractères 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 ne devant pas comporter plus de 255 caractères.

238! Je l’ai vérifié sous Win7 32 bit avec le script de bat suivant:

 set "fname=" for /l %%i in (1, 1, 27) do @call :setname @echo %fname% for /l %%i in (1, 1, 100) do @call :check goto :EOF :setname set "fname=%fname%_123456789" goto :EOF :check set "fname=%fname:~0,-1%" @echo xx>%fname% if not exist %fname% goto :eof dir /b pause goto :EOF 

En fait, il s’agit de 256, voir Comparaison des fonctionnalités du système de fichiers, Limites .

Pour répéter un post sur http://fixunix.com/microsoft-windows/30758-windows-xp-file-name-length-limit.html

“En supposant que nous parlions de NTFS et non de FAT32, le” 255 caractères pour path + file “est une limitation de Explorer, pas le système de fichiers lui-même. NTFS prend en charge des chemins allant jusqu’à 32 000 caractères Unicode, chacun contenant 255 caractères.

L’Explorateur et l’API Windows vous limitent à 260 caractères pour le chemin, à savoir la lettre de lecteur, les deux points, les barres obliques et le caractère nul final. Il est possible de lire un chemin plus long dans Windows si vous le lancez avec un \\

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é!

Je ne peux pas créer un fichier avec le nom + période + extnesion dans WS 2012 Explorer plus long que 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 système ne peut pas trouver le chemin spécifié.

Le fichier avec un nom de caractère 224 créé dans l’Explorateur ne peut pas être ouvert dans Notepad ++ – il ne contient qu’un nouveau fichier.