Pourquoi ce Path.Combine ne fonctionne-t-il pas?

J’ai la commande suivante:

ssortingng reportedContentFolderPath = Path.Combine(contentFolder.FullName.ToSsortingng(), @"\ReportedContent\"); 

Lorsque je regarde dans le débogueur, je peux voir ce qui suit:

 contentFolder.FullName = "E:\\" 

toutefois

 reportedContentFolderPath = "\\ReportedContent\\" 

Pourquoi Path.Combine coupe-t-il le E: \?

Vous avez une barre oblique sur @"\ReportedContent\" . Vous ne voulez pas cela (ou le dernier, je suppose) – essayez simplement:

 ssortingng reportedContentFolderPath = Path.Combine(contentFolder.FullName.ToSsortingng(), "ReportedContent"); 

De la documentation :

Si path2 n’inclut pas de racine (par exemple, si path2 ne commence pas par un caractère séparateur ou une spécification de lecteur), le résultat est une concaténation des deux chemins, avec un caractère séparateur intermédiaire. Si path2 inclut une racine, path2 est renvoyé.

Dans votre cas, path2 contenait une racine, elle a donc été renvoyée sans path2 .

Cela est expliqué dans la documentation de la méthode:

Si chemin2 n’inclut pas de racine (par exemple, si chemin2 ne commence pas par un caractère séparateur ou une spécification de lecteur), le résultat est une concaténation des deux chemins, avec un caractère séparateur intermédiaire. Si chemin2 inclut une racine, chemin2 est renvoyé.

Je vous recommande de tout lire pour comprendre le fonctionnement de toutes les combinaisons possibles: Méthode Path.Combine

Path.Combine renverra le deuxième argument s’il commence par un caractère de séparation ( \ ).

Je parierais qu’en spécifiant la barre oblique comme préfixe dans la deuxième chaîne, la méthode Combine assume le lecteur actuel. Essayez de supprimer la barre oblique.

Il semble que Path.Combine pense que les deux barres obliques E:\\ référence à un chemin d’access UNC, et qu’un chemin d’access UNC ne doit pas être préfixé par une lettre de lecteur. Changez le contentFolder en E:\ et cela devrait fonctionner.

De MSDN (c’est moi qui souligne):

 public static ssortingng Combine(ssortingng path1, ssortingng path2) 

[…]

Valeur de retour

Type: System.Ssortingng Les chemins combinés. Si l’un des chemins spécifiés est une chaîne de longueur nulle, cette méthode renvoie l’autre chemin. Si path2 contient un chemin absolu, cette méthode renvoie path2 .

@"\ReportedContent\" est un chemin absolu car il commence par une barre oblique inverse.