voici une question qui me turlupine depuis un moment et donc je ne trouve rien sur le forum.
Quelle est la différence entre "string.Concat" et "Path.Combine".
Mise à part que Path.Combine gère les "".
Je pose cette question, car il m'arrive de devoir employer
"string.concat" plutôt que "Path.combine" lors de concaténation
d'un Path source avec le nom d'un fichier.
Dernièrement j'ai eu ce problème sur cette ligne:
//Ne fonctionne pas
destination = Path.Combine(destination.Substring(0,
y), sousdossiers.FullName.Substring(x));
String.Concat concatène des objets sans autre traitement... alors que Path.Combine vérifie le type de path (/ ou \), vérifie si la première chaine se termine par un / (ou \)...
Merci pour ta réponse sebmafate,
mais qu'set ce qui se passe si ma première chaine ne comporte pas de \ ?
car ma seconde question est pourquoi je dois utiliser le string.concat plutôt que le path.combine pour réaliser mon path ?
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès.
Loi de Murphy.<!--
Merci Bidou, ça c'est une réponse claire comme je l'ai aime.
donc, si j'ai bien compris, je dévrai faire :
destination = Path.Combine(string.concat(path1,@""), path2);
Cela, pour être certain d'avoir un bon path.
cepandant, je sais que Path.combine change @"\" en @"", mais est ce qu'il change aussi @"\\" en @"".
après je peux faire des tests, mais si vous savez.
Merci
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès.
Loi de Murphy.<!--
A vrai dire, je trouve étonnant le comportement de cette fonction... et je n'ai pas de solution à proposer "à froid" si ce n'est de tester le dernier caractère du string (mais c'est justement pas le but, la fonction est là pour ça...).
ce qui gène dans l'exemple c'est le \ au début du path2... la fonction n'est pas prévue (c'est très con, je sais) pour ça.
Quand on le sait, on fait attention ;)
Personnellement le fait que le \ghi dérange Path.Combine ne me choque pas plus que ça, vu qu'au final "ghi\file.txt" est un chemin relatif alors que "\ghi\file.txt" va être considéré comme chemin absolu, de mémoire "\ghi\file.txt" étant directement équivalent à "<répertoire racine du répertoire courant>\ghi\file.txt"
En clair, si le répertoire courant est "C:\toto\titi"
"\ghi\file.txt" équivaut à "C:\ghi\file.txt"
"ghi\file.txt" équivaut à "C:\toto\titi\ghi\file.txt"
En clair, si le répertoire courant est "D:\toto"
"\ghi\file.txt" équivaut à "D:\ghi\file.txt"
"ghi\file.txt" équivaut à "D:\toto\ghi\file.txt"
Pas besoin d'être surpris vu que ce n'est pas le cas, cette méthode à le comportement annoncé par sa documentation :
"Si path2 contient un chemin d'accès absolu, cette méthode retourne path2."