Comment créer des répertoires dans windows avec un chemin de longueur supérieure à 256
J'ai plusieurs niveaux de répertoires dans le chemin d'accès au dossier. lorsque le chemin d'accès dépasse 256, je ne pouvais pas créer un sous-dossier ou un fichier à partir d'elle. Est-il possible de construire des chemins de plus de cette longueur.
Quelqu'un peut-il m'aider.
Vous devez vous connecter pour publier un commentaire.
En fait la limite sur les chaînes de chemin d'accès est de 260 caractères. L'OS sous-jacent, ces jours, peut prendre en charge beaucoup plus de noms de chemin d'accès, jusqu'à 32 767 caractères. Dans le but de désigner un chemin avec des noms longs et vous avez besoin d'utiliser la magie
\\?\
préfixe, et utiliser la version Unicode de l'API.Cependant, de nombreux outils ne prennent pas en charge ces noms longs. Un exemple classique d'un tel outil est l'Explorateur qui ne vous laisseront pas de créer des objets avec les noms de plus de 260 caractères. À cause de cela, je vous conseille fortement d'éviter la création de ces noms longs—faire vous feront économiser beaucoup de chagrin dans le long terme.
CreateFileW
, préfixe votre chemin avec"\\? ` et vous êtes bon pour aller.Cela devrait vous aider à démarrer: http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx#maxpath
C'est malheureusement un problème que je ne pense pas que sera demain, alors vous feriez bien de vous familiariser avec ce genre de choses.
En aparté, si vous avez accès à
robocopy
(est livré avec Windows Vista et 7, mais est également disponible pour XP), qui prend en charge les chemins longs, vous pouvez créer vos dossiers/sous-dossiers dans un haut dossier et ensuite utiliser robocopy pour déplacer le sous-dossier à son emplacement souhaité plus loin dans l'arborescence des dossiers.Selon la documentation ici http://msdn.microsoft.com/en-us/library/Aa365247, la longueur maximale est de 32 000, mais la plupart des Api windows encore vous limiter à
MAX_PATH
qui est de 260. Il y a quelques unicode Api qui vous permettent d'aller au-delà de l'260 limite.Voir ici, http://msdn.microsoft.com/en-us/library/aa363856.