Question

Je veux utiliser la bibliothèque Boost.Filesystem pour manipuler des chemins, des fichiers et des répertoires. Ma question est sont des chemins plus longs que MAX_PATH pris en charge?

Je sais que nous avons Win32API solution « \\? \ », Mais ce n'est pas pris en charge par des fonctions de base comme PathAppend et PathCombine.

Je suis à la recherche de toute information utile sur MAX_PATH et Boost.FS.

Merci

UPD: Je me soucie de toutes les opérations comme append de chemin, le chemin se combinent, etc (je les fonctions Win32API, mais ils ne fonctionne pas avec des chemins plus longs que MAX_PATH) Par exemple CreateFileW et DeleteFileW les deux chemins de support plus longtemps que MAX_PATH. Peut Boost.FS être un remplacement pour les fonctions d'utilité Win32API tels que ceux trouvés dans shlwapi et shell32 qui souvent ne prennent pas en charge les chemins longs

Était-ce utile?

La solution

La vérité est que Windows prend en charge les chemins de toute longueur et tout chemin peut être converti en chaîne sur les fenêtres. Ajout \\?\ est nécessaire dans ce cas, mais cela est la partie de « faire une chaîne d'un chemin donné » opération.

AFAIK, Boost :: FileSystem le fait de mal sur les fenêtres.

Je ne sais pas si un correctif est prévu. Voir cette sur la façon dont il devrait être fait.

Autres conseils

Vous pouvez manipuler toute la longueur de la chaîne de chemin du système de fichiers avec ou sans Boost.Filesystem.

MAX_PATH est les restrictions d'API de fichiers Windows. Autrement dit, vous ne pouvez pas passer trop longue chaîne de chemin d'accès API Windows.

Par exemple, supprimer la fonction de la Boost.Filesystem échouera avec plus de chemin de longueur MAX_PATH. Vous voulez Boost.Filesystem faire quelque chose comme changer de répertoire et utiliser le chemin relatif pour éviter la restriction MAX_PATH? Je ne pense pas son possible.

ÉDITÉ

Parce que Boost.Filesystem mis en œuvre sur la chaîne de C, vous n'avez pas à vous soucier de la longueur du trajet. Boost.Filesystem fournissent non seulement des méthodes de manipulation de chaîne de chemin, mais le fichier aussi des méthodes de manipulation du système. Vous devez éviter les méthodes du système de fichiers si le chemin résultant est trop long.

Je ne sais pas si Boost.Filesystem ou non support Unicode chemin Win32, mais vous pouvez convertir chemin final ANSI au chemin Unicode avant d'appeler les API de fichiers Win32.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top