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 utilisé par Windows XP ou Vista?
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 valeur MAX_PATH
(259 caractères pour les fichiers, 248 pour les dossiers). Voir http://msdn.Microsoft.com/en-us/library/aa365247.aspx pour plus de détails.
Voici ce que dit "l'exception non gérée" dans Framework 4.5 lors de la tentative d'enregistrement d'un fichier avec un nom de fichier long:
Le chemin, le nom de fichier ou les deux spécifiés sont trop longs. Le nom de fichier complet doit contenir moins de 26 caractères et le nom de répertoire moins de 248 caractères.
C'est 257 caractères. Pour être précis: NTFS lui-même impose une longueur de fichier maximale de plusieurs milliers de caractères (environ 30 000). Toutefois, Windows impose une longueur maximale de 260 pour le chemin d'accès + le nom du fichier. Le lecteur + dossier prend au moins 3 caractères, vous obtenez donc 257.
199 sous Windows XP NTFS, je viens de vérifier.
Ce n'est pas de la théorie mais d'essayer simplement mon ordinateur 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 le demande? Essayez par vous-même.
Selon MSDN , il s'agit de 260 caractères. Il inclut "<NUL>"
-le caractère nul de fin invisible, la longueur réelle est donc 259.
Mais lisez l'article, c'est un peu plus compliqué.
La longueur dans NTFS est 255. Le champ NameLength
de l'attribut NTFS $Filename
est un octet sans décalage; cela donne une plage de 0-255.
Le nom de fichier lui-même peut être 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). (Puisque la chaîne a une longueur, elle pourrait contenir\0 mais cela donnerait lieu à des problèmes et ne figure 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 complet sous Windows, vous devez préfixez le chemin avec \\?\ (ou utilisez \\?\UNC\serveur\partage pour les chemins UNC) pour marquer ce chemin comme un chemin de longueur étendue (~ 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 paramètre défini pour l'ensemble du processus).
255 caractères.
J'ajoute ceci à la réponse approuvée ci-dessus.
Pour être clair, les gens croient qu'il s'agit de 255 à 260 caractères, car c'est tout ce que l'explorateur Windows prend en charge. Il y aura erreur de faire 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 obtiendrez des longueurs dont Explorer se plaint en premier lieu). Le "correctif recommandé" de Microsoft dans de telles situations consiste à ouvrir le fichier dans le programme d'origine qui l'a écrit et à le renommer.
Selon la nouvelle documentation du Kit de développement logiciel (SDK) de Windows (8.0), il semble qu'une nouvelle limite de chemin d'accès soit fournie. Il y a un nouvel ensemble de fonctions de gestion de chemin 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
Cette partie de la documentation officielle indique clairement qu'il s'agit de 255 caractères Unicode pour NTFS, exFAT et FAT32, ainsi que 127 Unicode ou 254 ASCII caractères 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 contenant pas plus de 255 caractères.
255 caractères, même si le chemin complet ne doit pas être plus long. Il y a une belle table sur Wikipedia à ce sujet: http://en.wikipedia.org/wiki/Filename .