C# Dosya İşlemleri

Sosyal medyada paylaşın

Bu yazıda c# ile klasör oluşturma, dosya oluşturma, dosyanın özel bilgilerini görme, metin belgesi oluşturup ve üzerine yazma okuma gibi işlemlere göz atacağız.

Bu işlemleri yapabilmek için System.IO kütüphanesini kullanacağız.

Klasör Fonksiyonları

Directory.CreateDirectory

Directory sınıfını kullanarak klasör oluşturabiliriz. Bunun için oluşturulacak yerin konumunu vermemiz gerekiyor. Ben masaüstümde oluşturmayı tercih ettim. Path içinde neden \\ kullandık diye soracak olursanız bunu Kaçış Karakterleri adı altındaki yazımda görebilirsiniz.

        private void button2_Click(object sender, EventArgs e)
        {
            string path = "C:\\Users\\angel\\Desktop\\testfolder";
            Directory.CreateDirectory(path);
        }

Directory.Delete

Var olan bir klasörü silmek için kullanılır.

            string path = "C:\\Users\\angel\\Desktop\\testfolder";
            Directory.Delete(path);

Directory.Exist

Konumu belirtilen path’deki klasörün varlığının kontrolü için kullanılır.

            string path = "C:\\Users\\angel\\Desktop\\testfolder";
            bool isExist=Directory.Exists(path);

Directory.GetDirectories

Belirtilen konumdaki tüm klasörleri listelemek için kullanılır. String dizi döndürür.

            string path = "C:\\Users\\angel\\Desktop";
            string[] subFolders = Directory.GetDirectories(path);
            listBox1.Items.AddRange(subFolders);

Directory.GetFiles

Belirtilen konumdaki tüm dosyaları listelemek için kullanılır. String dizi döndürür.

            string path = "C:\\Users\\angel\\Desktop";
            string[] subFolders = Directory.GetFiles(path);
            listBox1.Items.AddRange(subFolders);

Directory.GetFileSystemEntries

Belirtilen klasörün içerisindeki ikinci parametre ile belirtilen dosyayı arar bulursa yoluyla beraber ismini döndürür. Bu fonksiyonda joker karakterler kullanarak sadece txt veya sadece exe vs. bulunabilir.​

            string[] root = Directory.GetFileSystemEntries("C:\\Program Files (x86)", "*.exe");
            listBox1.Items.AddRange(root);

Dosya Fonksiyonları

FileInfo Sınıfı

Dosya fonksiyonları için c#’da tanımlanmış FileInfo sınıfını kullanacağız. Bu kısım çok basit, açıklama yapmadan geçiyorum. Kodlardan anlarsınız zaten.

            string path = "C:\\Users\\angel\\Desktop\\test";
            FileInfo fileInfo = new FileInfo(path);

            MessageBox.Show(fileInfo.FullName);
            MessageBox.Show(fileInfo.Name);
            MessageBox.Show(fileInfo.Directory.ToString());
            MessageBox.Show(fileInfo.Length.ToString());
            MessageBox.Show(fileInfo.CreationTime.ToString());
            MessageBox.Show(fileInfo.LastWriteTime.ToString());

Stream Sınıfı

Dosya işlemleri StreamReader sınıfı ile de yapılabilmektedir. Stream Reader sınıfı daha çok tercih edilir, daha çok kapsamlıdır.

StreamReader.ReadLine

Dosyadan satır okumak için kullanılır. Dosyayı okumadan önce varlık kontrolü yapmayı unutmayalım.

            string path = "C:\\Users\\angel\\Desktop\\test\\test.txt";
            StreamReader streamReader = new StreamReader(path);
            while (!streamReader.EndOfStream)
            {
                MessageBox.Show(streamReader.ReadLine());
            }

Ek olarak stream.ReadToEnd() diyip tüm metin belgesini tek seferde okuyup onu diziye atabilirsiniz. Metni ayırmak için split işlemi vs uygulayıp ihtiyacınız olan kısımları elde edebilirsiniz.

StreamWriter

Dosyaya yazma işlemleri için Stream Writer sınıfını kullanıyoruz.

            string path = "C:\\Users\\angel\\Desktop\\test\\test.txt";
            StreamWriter streamWriter = new StreamWriter(path);
            streamWriter.WriteLine("Stream Writer kullanarak yeni satır yazdım.");
            streamWriter.Close();

Burada önemli nokta işimiz bitinde dosyayı kapatmak, yoksa kaydetme işlemi tamamlanamaz. Ek olarak oluşturduğumuz StreamWriter’a ikinci parametre olarak TRUE verirsek dosyaya kaldığı yerden yazar, eski kısımları silmez. Lütfen bu kısıma dikkat edelim 🙂

Yazımızın sonunda geldik, yine çok teoriye girmeden yüzeysel ve anlaşılacak şekilde anlatmaya çalıştım umarım beğenmişsinizdir. Sonraki yazılarda görüşmek üzere…