2010-01-07 32 views
43

No pude encontrar un método DirectoryInfo.Rename (To) o FileInfo.Rename (To) en ninguna parte. Por lo tanto, escribí el mío y lo estoy publicando aquí para que cualquiera lo use si lo necesitan, porque seamos sinceros: los métodos MoveTo son excesivos y siempre requerirán una lógica adicional si solo quieres renombrar un directorio o archivo:Cambiar el nombre de un directorio en C#

public static class DirectoryExtensions 
{ 
    public static void RenameTo(this DirectoryInfo di, string name) 
    { 
     if (di == null) 
     { 
      throw new ArgumentNullException("di", "Directory info to rename cannot be null"); 
     } 

     if (string.IsNullOrWhiteSpace(name)) 
     { 
      throw new ArgumentException("New name cannot be null or blank", "name"); 
     } 

     di.MoveTo(Path.Combine(di.Parent.FullName, name)); 

     return; //done 
    } 
} 
+2

¿Podría reformular la pregunta completa y publicar una respuesta que contenga su solución? – Coincoin

+5

No hay pregunta? :( – Sapph

+1

Parece una exageración en sí misma –

Respuesta

88

no hay diferencia entre el movimiento y el cambio de nombre; simplemente debe llamar al Directory.Move.

En general, si sólo está haciendo una sola operación, se debe utilizar los static métodos en las clases File y Directory en lugar de crear FileInfo y DirectoryInfo objetos.

Para obtener más consejos al trabajar con archivos y directorios, vea here.

+3

Preste atención a que el cambio de casos como 'foo' a' Foo' arrojará una IOException cuando se haga con un simple 'Directory.Move' como ambos son considerados como el mismo camino. Entonces hay una diferencia ... solo diciendo. – Kabbalah

49

debe moverlo:

Directory.Move(source, destination); 
12

Ya existe uno. Si no puede superar la sintaxis "Mover" del espacio de nombre System.IO. Hay una clase estática FileSystem dentro del espacio de nombre Microsoft.VisualBasic.FileIO que tiene tanto uno como RenameDirectory y RenameFile.

Según lo mencionado por SLaks, esto es solo un contenedor para Directory.Move y File.Move.

+3

+1 mierda sagrada, Batman! –

+9

Todo lo que hacen es validar los parámetros y llamar a 'Directory.Move' y' File.Move'. – SLaks

+3

Sí, estoy de acuerdo. Creo que su queja se debe a que "Mover" no le hace pensar automáticamente "Renombrar". Si quiere la sintaxis, existe en ese formato, solo en otro espacio de nombres. – jsmith

Cuestiones relacionadas