C# – Klasörü İçeriğindeki Herşey İle Kopyalama

Bu yazımda bir klasörü alt klasörler ve dosyalarla birlikte nasıl kopyalanacağını anlatacağım.

Öncelikle bu iş için C# tarafında basit bir yöntem ne yazıkki yoktur. Bunun için sizinle bir metot paylaşacağım.

    class Program
    {
        static void Main(string[] args)
        {
            string kaynakDizin = @"C:\Kaynak";
            string hedefDizin = @"C:\Hedef";

            Copy(kaynakDizin, hedefDizin);

            Console.WriteLine("Bitti..");
            Console.ReadKey();
        }

        public static void Copy(string kaynakDizin, string hedefDizin)
        {
            var diKaynak = new DirectoryInfo(kaynakDizin);
            var diHedef = new DirectoryInfo(hedefDizin);

            CopyAll(diKaynak, diHedef);
        }

        public static void CopyAll(DirectoryInfo kaynak, DirectoryInfo hedef)
        {
            Directory.CreateDirectory(hedef.FullName);

            //Dosyaları Yeni Dizine Kopyalıyoruz.
            foreach (FileInfo fi in kaynak.GetFiles())
            {
                Console.WriteLine(@"Kopyalanan : {0} \ {1}", hedef.FullName, fi.Name);
                fi.CopyTo(Path.Combine(hedef.FullName, fi.Name), true);
            }

            //Özyineli (recursive) Fonksiyon Kullanarak Alt Dizinleri Kopyalıyoruz.
            foreach (DirectoryInfo diKaynakAltDizin in kaynak.GetDirectories())
            {
                DirectoryInfo sonrakiHedefAltDizin =
                    hedef.CreateSubdirectory(diKaynakAltDizin.Name);
                CopyAll(diKaynakAltDizin, sonrakiHedefAltDizin);
            }
        }
    }

Paylaşmış olduğum metot zaten çok basit ve anlaşılır şekilde. Anlamadığınız veya takıldığınız yerler olursa yorumlarda sorunuzu sorabilirsiniz.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.