après une longue recherche, j'ai finalement découvert que les chemins d'accès ne pouvaient pas dépasser 256 caractères, même dans le dernier Microsoft Windows 7. Je ne comprends vraiment pas pourquoi il y a une limitation aussi stupide, car NTFS peut gérer jusqu'à 32 000 caractères de chemin longueur sans aucun problème depuis plus d'une dizaine d'années! N'y a-t-il aucune possibilité de changer cela? Ou existe-t-il des solutions pratiques pour éviter cela?
260 caractères ne sont que très peu pour des cas d'utilisation même simples comme certains répertoires de photos imbriqués avec de longs noms de fichiers.
Réponses:
Selon Microsoft:
L'API Windows traditionnelle limite les noms de chemin à 260 caractères, même pour les applications développées pour la dernière version.
Les applications utilisant l'API Unicode peuvent utiliser une forme de chemin qui autorise jusqu'à 32 767 caractères. Le nom du fichier doit être préfixé
\\?\
et doit être un chemin absolu, par exemple,\\?\c:\dir\file
ou\\?\UNC\server\share\file
. Il existe d'autres limitations, voir la référence pour plus de détails.Si vous avez réussi à créer et à utiliser une hiérarchie de fichiers approfondie et que vous devez travailler avec une application qui se bombarde en raison de la longueur du nom de fichier, vous pouvez essayer quelques choses:
Utilisez la
mklink
commande pour créer des liens symboliques et passez un chemin qui les utilise à votre application.Utilisez la
subst
commande pour affecter une lettre de lecteur à un répertoire.Démarrez votre application à partir d'un répertoire profond et passez-lui de courts chemins relatifs.
Remplacez certains noms longs par leurs alias 8.3 (
micros~1
), en supposant que ceux-ci existent toujours dans Windows 7. Si vous avez àmicros~1
côtémicros~2
, je ne sais pas qui est lequel; peut-être exécuter DOScommand.com
(encore une fois, en supposant que Windows 7 peut toujours le faire).la source
micros~1
, il est donc essentiellement aléatoire.Vous pouvez utiliser les noms courts (8.3) pour tous vos dossiers et fichiers.
Vous devez cependant vous assurer qu'ils sont activés.
(mon audacieux)
Vous devrez également écrire du code pour obtenir le nom court du nom long.
La source
la source
Le nom de fichier / répertoire dans NTFS est limité à 255 points de code unicode, car la longueur est stockée sous forme d'octet. Mais il n'y a pas de limite inhérente à la longueur totale du chemin.
De nombreux appels à l'API Win32 (y compris le shell de l'explorateur) ont une limite de longueur de 260 - 1. Certains autres appels ont la possibilité d'utiliser le préfixe \\? \ Pour obtenir jusqu'à 32 Ko (un peu moins, car le nom du volume est substitué dans Kernel-land)
la source