winny68
Messages postés99Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention14 février 2011
-
6 mars 2008 à 18:07
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014
-
12 mars 2008 à 19:23
Bonjour a tout le monde,
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));
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201436 6 mars 2008 à 19:49
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 \)...
winny68
Messages postés99Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention14 février 20111 6 mars 2008 à 20:03
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.<!--
winny68
Messages postés99Date d'inscriptionvendredi 25 avril 2003StatutMembreDernière intervention14 février 20111 6 mars 2008 à 21:23
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.<!--
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 6 mars 2008 à 21:47
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...).
sebmafate
Messages postés4936Date d'inscriptionlundi 17 février 2003StatutMembreDernière intervention14 février 201436 7 mars 2008 à 14:14
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 ;)
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 8 mars 2008 à 00:57
Salut,
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"
cs_coq
Messages postés6350Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 12 mars 2008 à 19:23
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."