2010-06-11 13 views
0

Si une façon plus efficace de faire ce qui suit:En utilisant DirectoryInfo en C#

DirectoryInfo di = new DirectoryInfo(@"c:\"); 
newFileName = Path.Combine(di.FullName, "MyFile.Txt"); 

Je me rends compte que ce ne sont que deux lignes de code, mais étant donné que j'ai déjà le répertoire, il se sent comme je devrais être capable de faire quelque chose comme:

newFileName = di.Combine(“MyFile.txt”); 

EDIT:

aurait dû être plus clair - je l'ai déjà le chemin à une autre fin, donc:

DirectoryInfo di = MyFuncReturnsDir(); 
newFileName = Path.Combine(di.FullName, "MyFile.Txt"); 
+0

Cela n'a pas besoin de fixation, il est déjà aussi compact et fiable ça peut arriver. Vous pouvez l'écrire en une seule ligne, le rend moins lisible. –

Répondre

5

Pourquoi ne pas simplement faire newFileName = Path.Combine(@"c:\", "MyFile.Txt");?

Comme vous le dites, vous avez déjà le chemin.

+1

+1, a été ma première pensée aussi. – OregonGhost

+0

J'ai édité mon post - J'ai l'objet DirectoryInfo pour une raison –

+0

@ pm_2: Je ne suis pas sûr que cela améliorerait les choses, mais vous pouvez toujours écrire 'newFileName = Path.Combine (MyFuncReturnsDir(). FullName, "MyFile.Txt"); 'si vous le voulez sur une ligne. –

2

@ ho1 a raison.

Vous pouvez également écrire une méthode d'extension (C# 3.0+):

public static class DirectoryInforExtensions 
{ 
    public static string Combine(this DirectoryInfo directoryInfo, string fileName) 
    { 
    return Path.Combine(di.FullName, fileName); 
    } 
} 

et de l'utiliser en faisant

newFileName = di.Combine("MyFile.txt");