Retrait du lecteur (ou le nom de réseau) à partir du chemin en C#

Ce qui est le plus concis (mais sans danger) pour supprimer un nom de lecteur, le chemin d'accès réseau, etc. à partir d'un chemin d'accès absolu en C#?

Par exemple, la conversion

\\networkmachine\foo\bar

ou

C:\foo\bar

à \foo\bar.

Il semble y avoir un bon nombre de questions déjà répondu en ce qui concerne le chemin de questions, mais je ne pouvais pas trouver exactement ce que je cherchais. Ma première pensée qui vint à l'esprit était d'utiliser le Chemin d'accès.GetFullPath() pour s'assurer que je suis en effet à travailler avec un chemin d'accès absolu et ensuite seulement à utiliser une expression régulière pour trouver la première barre oblique qui n'est pas à côté de l'autre. Cependant, en utilisant une expression régulière pour faire le chemin de la manipulation semble un peu dangereux.

Serait-il peut-être plus sage d'obtenir la lettre de lecteur/réseau cible de la machine/etc, convertir les chaînes de caractères à l'Uri, et demander le chemin relatif du lecteur/de la machine, et ensuite de les convertir en arrière à cordes? Ou est-il une meilleure approche?

  • J'ai écrit mes propres fonctions d'assistance qui traitent de ce. Juste quelques if...else et des opérations de chaîne.
  • Ensuite, il peut être agréable de partager ces méthodes avec nous. Sinon, votre commentaire est inutile 🙂
  • Vous pourriez bande de la chaîne renvoyée par Path.GetPathRoot() depuis le début de la trajectoire, mais qui serait également la bande foo à partir du réseau de chemin, puisque c'est la part de nom.
  • Ou si vous faites beaucoup de ces manipulations, vous voudrez peut-être consulter alphafs.codeplex.com, qui contient quelques-uns supplémentaires chemin de la manipulation des options à ceux fournis par .NET avec le support pour de longues chemins (pas disponible en standard .NET)
InformationsquelleAutor UtopiaLtd | 2011-10-14