C# Klasör ve Dosya İşlemleri
Merhabalar ,
Bu yazımda genel olarak C# ta Dosya ve Klasör işlemleri nasıl yapılır, dosya klasör oluşturma , okuma yazma silme ,taşıma v.s. işlemleri hakkında hem kendime hatırlatıcı not lar hemde sizlerin de faydalanabileceği şekilde örnekler ile açıklamaya çalışacağım.
Örnek Projeye github hesabımdan ulaşabilirsiniz : https://github.com/salihseker/C-DosyaKlasorIslemleri Takip etmeyi unutmayın 🙂
[raw] [/raw]
KLASÖR İŞLEMLERİ
Öncelikle Directory sınıfı ile ilgili işlemleri inceleyeceğiz , Directory sınıfı System.IO da bulunan Klasör işlemlerini yapmamıza yarayan sınıftır .Bu nedenle projemizin using kısmına using System.IO; şeklinde sınıfımızı ekliyoruz.
//www.salihseker.com - Salih ŞEKER using System.IO; //
Klasör Oluşturma :
//www.salihseker.com - Salih ŞEKER private static void KlasorOlusturmaIslemi() { Directory.CreateDirectory(@"C:\Salih\DirectorySinifi");//C sürücüsü altında klasör oluşturma Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"Salih\DirectorySinifi");//Projenin Exe sinin bulunduğu kısımda klasör oluşturma. }
Klasör Varlık Kontrolü :
//www.salihseker.com - Salih ŞEKER private static void KlasorKontrolu() { bool Kontrol = Directory.Exists(@"C:\Salih\DirectorySinifi");//Exists klasör yolu verilen dizin i kontrol edip true veya false döner if (Kontrol) { Console.WriteLine("Belirtilen dizinde klasör mevcut"); } else { Console.WriteLine("Belirtilen dizinde klasör bulunamadı"); } }
Uygulamanın çalıştığı klasörü bulma GetCurrentDirectory:
//www.salihseker.com - Salih ŞEKER private static void GetCurrentDirectory() { string path = Directory.GetCurrentDirectory();//Exe nin bulunduğu dizin i getirme Console.WriteLine(path); Directory.SetCurrentDirectory(@"C:\Salih");//Uygulama çalışırken uygulama çalışma yolunu değiştirme path = Directory.GetCurrentDirectory(); Console.WriteLine(path); }
DirectoryInfo Kullanımı:
Verilen dizindeki klasör hakkında adı , oluşturma tarihi , tam yolu , alt klasör oluşturma , alt klasör bilgileri v.s. Klasör hakkında bilgileri öğrenmemizi sağlar.
Kullanımı : DirectoryInfo DI = new DirectoryInfo(@”C:\Salih”); şeklindedir.
//www.salihseker.com - Salih ŞEKER private static void DirectoryInfoKullanımı() { DirectoryInfo DI = new DirectoryInfo(@"C:\Salih"); Console.WriteLine("Bulunduğu dizin adı :" + DI.Parent.FullName); Console.WriteLine("Oluşturma Tarih :" + DI.CreationTime.ToString("dd.MM.yyyy hh:mm")); Console.WriteLine("Tam Yol Bilgisi : " + DI.FullName); Console.WriteLine("Son Erişim Tarih" + DI.LastAccessTime.ToString("dd.MM.yyyy hh:mm")); DI.CreateSubdirectory("AltKlasor"); DirectoryInfo[] Liste = DI.GetDirectories();//Klasör içindeki alt klasörleri listesi foreach (var item in Liste) { Console.WriteLine(item.FullName); } }
[raw] [/raw]
Klasör Taşıma:
//www.salihseker.com - Salih ŞEKER private static void KlasorTasima() { Directory.Move(@"C:\Salih\A", @"C:\Seker\A"); }
Klasör Silme:
//www.salihseker.com - Salih ŞEKER private static void KlasorSilme() { Directory.Delete(@"C:\Seker",true);//Klasör içi dolu olsa dahi silinmesi için ikinci parametre true olmalı. }
Sistemdeki Sürücülerin Listesini öğrenme (C:,D:) gibi :
//www.salihseker.com - Salih ŞEKER private static void SistemSurucuListesi() { string[] SistemSuruculeri = Directory.GetLogicalDrives(); foreach (var item in SistemSuruculeri) { Console.WriteLine("Sürücü Adı : " + item); } }
Klasör içindeki klasörlerin listesi:
//www.salihseker.com - Salih ŞEKER private static void KlasorListele() { string[] Liste = Directory.GetDirectories(@"C:\Program Files\"); foreach (var item in Liste) { Console.WriteLine(item); } }
DOSYA İŞLEMLERİ
Dosya işlemleri için klasör işlemleri gibi System.IO kütüphanesini using kısmında uygulamamıza ekliyoruz , Dosya işlemleri için File sınıfını kullanacağız.
FileStream, Stream ana soyut sınıfı kullanılarak genişletilmiş, belirtilen kaynak dosyalar üzerinde okuma/yazma/atlama gibi operasyonları yapmamıza yardımcı olan bir sınıftır. Bu sınıf sayesinde senkron ve asenkron olarak okuma/yazma operasyonlarını gerçekleştirebiliriz.
[raw] [/raw]
Dosya Oluşturma:
//www.salihseker.com - Salih ŞEKER private static void DosyaOlusturma() { FileStream fs = File.Create(@"C:\Salih\Merhaba.txt");//Salih Klasörü altında Merhaba isminde bir txt oluşturulur. fs.Close();//Oluşturulan dosyayı kapatmamız gerekir. yoksa txt dosyasını açmaya çalıştığımızda hata alırız. }
Dosya Kontrolü :
yolu verilen dizinindeki dosyanın olup olmadığı kontrolünü yapma işlemi.
//www.salihseker.com - Salih ŞEKER private static void DosyaKontrolIslemleri() { bool Kontrol = File.Exists(@"C:\Salih\Merhaba.txt"); if (Kontrol) { Console.WriteLine("Dosya sistemde mevcut."); } else { Console.WriteLine("Dosya sistemde bulunamadı."); } }
Dosyaya veri yazma:
yazma işlemleri için System.IO nun altsınıfı olan StreamWriter sınıfını kullanacağız.
//www.salihseker.com - Salih ŞEKER private static void DosyaVeriYaz() { StreamWriter sw = new StreamWriter(@"C:\Salih\Merhaba.txt"); sw.WriteLine("Merhaba Dünya!"); sw.Close(); }
[raw] [/raw]
Dosyadaki veriyi okuma:
okuma işlemi için System.IO nun altsınıfı olan StreamWriter sınıfını kullanacağız.
//www.salihseker.com - Salih ŞEKER private static void DosyaVeriOku() { StreamReader sr = new StreamReader(@"C:\Salih\Merhaba.txt"); string Veri = sr.ReadToEnd(); sr.Close(); Console.WriteLine(Veri); Console.ReadLine(); }
Dosya Taşıma:
//www.salihseker.com - Salih ŞEKER private static void DosyaTasima() { File.Move(@"C:\Salih\Merhaba.txt", @"C:\Seker\Merhaba.txt");//Dosya kopyalanmaz komple taşınır. }
Dosya Kopyalama:
//www.salihseker.com - Salih ŞEKER private static void DosyaKopyalama() { for (int i = 0; i < 5; i++)//5 kere Kopyalamak için Merhaba1.txt,Merhaba2.txt,...,Merhaba5.txt { string DosyaIsim = "Merhaba" + i.ToString() + ".txt"; File.Copy(@"C:\Salih\Merhaba.txt", @"C:\Salih\Tasinan\" + DosyaIsim); } }
[raw] [/raw]
Dosya Silme:
//www.salihseker.com - Salih ŞEKER private static void DosyaSilme() { File.Delete(@"C:\Salih\Tasinan\Merhaba1.txt"); }
Dosya Listeleme:
//www.salihseker.com - Salih ŞEKER private static void DosyaListele() { string[] Dosyalarim = Directory.GetFiles(@"C:\Salih\Tasinan\"); for (int i = 0; i < Dosyalarim.Length; i++) { Console.WriteLine("Dosya Yolu:" + Dosyalarim[i]); } Console.ReadLine(); }
FileInfo Kullanımı :
Verilen dizindeki dosya hakkında adı , oluşturma tarihi , tam yolu , uzantısı , bulundu klasör v.s. dosya hakkında bilgileri öğrenmemizi sağlar.
//www.salihseker.com - Salih ŞEKER private static void FileInfoKullanımı() { FileInfo FI = new FileInfo(@"C:\Salih\Tasinan\Merhaba0.txt"); DirectoryInfo DI = FI.Directory;//Bulunduğu klasör. FileInfo[] DirectoryInfoList = DI.GetFiles();//dosyanın bulunduğu klasördeki dosyaların listesi. Console.WriteLine("Dosya Olusturma Zamani : " + FI.CreationTime.ToString("dd.MM.yyyy hh:ss")); Console.WriteLine("Tam Yol Bilgisi : " + FI.FullName); Console.WriteLine("Dosya Uzantisi : " + FI.Extension); Console.WriteLine("Byte Uzunluk : " + FI.Length.ToString()); Console.WriteLine("Dosya Adi : " + FI.Name); Console.WriteLine("Klasor Adi : " + FI.DirectoryName); foreach (var item in DI.GetFiles()) { Console.WriteLine("Klasör --> "+ FI.DirectoryName + " - Dosya Adi -->" + item.Name); } Console.ReadLine(); }
Bu yazımda burada sonlanmaktadır , basit el altında bulunması gereken , dosya ve klasör işlemleri yaparken yardımcı olacağını düşünüyorum , umarım faydalı olmuştur.
İyi Çalışmalar 🙂 — Salih ŞEKER