J'ai des fichiers sur mon disque dur qui jette un http://msdn.microsoft .com / fr-nous / bibliothèque / aa365247% 28Vs.85% 29.aspx # maxpath mentionné par d'autres réponses suggère de mettre un préfixe "\? \" sur le nom du fichier, mais dans ce cas, le la réponse " PathToolonGException dans C # Code " ne vous aide pas parce que Il s'agit d'une application multi-threadée et je ne peux pas continuer à changer le chemin d'application actuel. P>
Dois-je vraiment tout faire avec pathToolongexception code> lorsque j'accède à la propriété
FULLNAME CODE> d'un objet
FileSysteminfo code> objet. Y a-t-il un moyen autour de cela (à l'exclusion de la renommée des fichiers qui n'est pas une option)? P>
DistoireIfo .GetFileSysteminfos () code> est responsable de la création du
FileSysteminfo code> des objets et
DistoireIfo code> n'accepte pas ce préfixe afin qu'il n'y a aucun moyen de l'utiliser. P>
Pinvoke code> juste pour pouvoir lire chaque fichier sur le disque dur? P>
4 Réponses :
Il n'y a pas beaucoup de programmes qui peuvent survivre à un chemin de plus de 259 caractères. Limite assez difficile pour la couche Winapi, max_path est partout. Il a été considéré pour .NET mais sans résultats concrets. Blog post Series se termine ici avec des liens vers des entrées précédentes en bas. P>
Ceci semble intéressant ... wrapper de chemin longue Codepex p>
Le wrapper long chemin fournit des fonctionnalités permettant de fonctionner plus facilement avec des chemins plus longs que la limite de 259 caractères actuelle de l'espace de noms System.IO. En utilisant les classes de chemin longue, les projets peuvent désormais utiliser des chemins jusqu'à 32 000 caractères. P>
Je vais essayer d'essayer, bien que je notez immédiatement, il ne fournit pas de méthode équivalente à distoireInfo.getfilesysteminfos () code> afin que cela aura besoin de modification. P>
Travailler correctement avec de longues chemins n'est pas si difficile - Setacl le fait-il, par exemple. Mais: p>
Voici la documentation sur MSDN sur les chemins longs: http://msdn.microsoft.com/en-us/library/aa365247 (v = vs.85) .aspx p>
AS de Windows 10 (ou Windows Server 2016) et .NET 4.6.2, les chemins longs peuvent être pris en charge directement si un paramètre de registre est activé et que votre application est marquée comme étant "Cays-dure longue".
Le paramètre est accessible via l'éditeur de stratégie de groupe local ( afin de marquer votre application en tant que "PROPRÈRE LONGRE au courant", ajoutez cette section à votre fichier manifeste: p> gpedit.msc code>), sous
<configuration>
<runtime>
<AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false" />
</runtime>
</configuration>
Avez-vous essayé: codeProject.com/kb/files/longfilenames.aspx ?