#97 - Un'extension method per copiare una cartella
di Ugo Lattanzi, in .NET Framework, 6 febbraio 2009
All'interno della Base Class Library del Framework .NET non è presente un metodo che ci permette di copiare una folder con tutto il suo contenuto, se non all'interno dell'assembly Microsoft.VisualBasic (per chi fosse interessato Microsoft.VisualBasic.FileIO.FileSystem.CopyDirectory).
La motivazione della mancata integrazione di questa funzione è già stata data dal Team della BCL a questo indirizzo http://blogs.msdn.com/bclteam/archive/2004/01/19/60377.aspx
Non è una cosa brutta sfruttare l'assembly Microsoft.VisualBasic dalla nostra applicazione per invocare il method in questione, ma neanche elegantissima, specie se ci non ci serve altro da quell'assembly.
Lo snippet seguente non è altro che una funzione ricorsiva che si occupa di ricreare la stessa struttura di cartelle da un path all'altro e copiarci all'interno i files con l'utilizzo di Directory.Create e File.Copy.
public static void Copy(this DirectoryInfo source, string destDirectory, bool recursive) { if (source == null) throw new ArgumentNullException("source"); if (string.IsNullOrEmpty(destDirectory)) throw new ArgumentNullException("destDirectory"); if (!source.Exists) throw new DirectoryNotFoundException("Source directory not found: " + source.FullName); if (!Directory.Exists(destDirectory)) Directory.CreateDirectory(destDirectory); var files = source.GetFiles(); //Copio tutti i file della cartella for (var i = 0; i < files.Length; i++) files<i>.CopyTo(Path.Combine(destDirectory, files<i>.Name), true); if (!recursive) return; var directories = source.GetDirectories(); //Se ricorsiva ricreo la struttura for (var i = 0; i < directories.Length; i++) Copy(directories<i>, Path.Combine(destDirectory, directories<i>.Name), recursive); }
Approfondimenti
-
#111 - Personalizzare la serializzazione delle entità di ADO.NET Data Services
-
Velocity arriva alla CTP3
-
.NET Framework 4.0 beta 1: ASP.NET MVC
-
#159 - Gestire code di operazioni con un Dispatcher personalizzato
-
#135 - Gestire il canale di comunicazione con WCF
-
#123 - Intercettare gli eventi del serializzatore WCF
-
#116 - Visualizzare gli handler abilitati in un'applicazione web con LINQ e Microsoft.Web.Administration
-
#167 - Eseguire un'applicazione per il .NET Framework con privilegi amministrativi
-
.NET Framework 4.0 beta 1: Workflow Foundation 4.0
-
Testare il mapping di Entity Framework
-
ModelVirtualCasting: un'applicazione completa per .NET Framework 4.0 e Silverlight 4.0
-
nuovo tool da ms resarch: dotolo. ottimizza il cariamento delle pagine #ajax, gira con #netfx3.5 http://u.aspitalia.com/ah

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.