C# dosya işlemleri

Masaüsütü uygulamamız için dosyalara, klasörlere ihtiyaç duymuşuzdur. Bu ihtiyaca karşılık hatırlatıcı bir kaç satır kod paylaşmak istedim.

File ve Directory sınıflarını kullanacağımız bu örneklerde bu iki sınıfı karıştırmamanız. Bu örnekler içinde openfilediretory kontrolünüde kullanacağız.

İlk örneğimiz resimdeki form tasarımı üzerinde, textbox daki değer adı ile yeni klasör oluşturalım.

1
2
3
4
5
6
7
8
9
10
11
 bool varmi = Directory.Exists("c:\" + textBox1.Text);

            if (varmi == false)
            {
                Directory.CreateDirectory("
c:\" + textBox1.Text);
                MessageBox.Show(textBox1.Text + "
isimli klasör oluşturuldu.");
            }
            else
            {
                MessageBox.Show("
Oluşturulmadı çünkü "+ textBox1.Text + " isimli klasör mevcut.");
            }

Directory’ü klasör oluşturduğumuzda kullanırız, file ise dosya oluşturduğumuzda kullanırız. Alttaki örneğimizde openfiledialog kontrolünü de kullanarak seçilen dosya uzantısı ilgili textbox a yazdırdık.

1
2
3
4
5
6
7
8
9
   string kopyalanandosyaadi;
        private void button2_Click(object sender, EventArgs e)
        {
            openFileDialog1.ShowDialog();
            textBox2.Text = openFileDialog1.FileName;

            kopyalanandosyaadi = Path.GetFileName(textBox2.Text);
           
        }

kopyalanandosyaadi değişkenini global olarak tanımlamamızın nedeni sonraki işlemimizde yani dosyayı kopyalama işleminde kullanmamız olmasındandır. Alttaki örnekte gösterilen uzantı daki belirlediğimiz klasör içine kopyalayalım.

1
2
3
4
5
6
7
8
9
10
 if (File.Exists(@"c:\\klasorum\" + kopyalanandosyaadi))
            {
                MessageBox.Show("Dosya zaten mevcut");
            }
            else
            {
                File.Copy(textBox2.Text, "c:\\klasorum\" + kopyalanandosyaadi);
                MessageBox.Show("
Dosya kopyalandı");
               
            }

Burada(File.Copy) kopyalanacak dosya ilk önce kopyalanan yerde sonrasında gelmekte. kopyalanan yer ve dosya adı, kopyalanacak dosya şekilde gelmektedir.

Son olarak mevcut klasörü silme işlemini yapalım. Klasör silme işlemi alttaki şekilde gerçekleşmede.

1
2
3
4
5
6
7
8
9
  if (Directory.Exists(@"c:\\asd\"))
            {
                Directory.Delete("c:\\asd", true);
                MessageBox.Show("Silindi");
            }
            else
            {
                MessageBox.Show("Dosya yerinde yok");
            }

Xml dosya oluşturma ve veri ekleme

Projelerimizde bazen küçük verileri bir yerde saklamak istemişizdir. Bu durumlarda yardıma koşan en basit text dosyası veriyi görüntüleme, sorgulama bakımından yetersiz olmaktadır. Bu gibi durumlarda yardımımıza xml gelmektedir. Xml genel olarak veri saklama ve farklı sistemler arasında geçişi sağlayan W3C tarafından tanımlanmış standarttır.

Basit bir örnek ile xml c3 projelerimizde nasıl kullanırız görelim. Bunun yanında bilgisayardaki herhangi bir dizine klasör nasıl oluşturulur bu örnek içinde de bulabilirsiniz. Resimdeki gibi form tasarlayarak örneği daha iyi anlayabilirsiniz.

Formu tasarladıktan sonra ilk önce c# da klasör nasıl oluşturulur Klasör oluştur buton clik olayına çift tıklayarak alttaki kodları harfiyen girelim.

1
2
3
4
5
6
7
8
9
10
11
12
13
 private void btnklasor_Click(object sender, EventArgs e)
        {

            bool klasorvarmi = Directory.Exists("c:\\klasorum");
            if (klasorvarmi == false)
            {

                Directory.CreateDirectory("c:\\klasorum");

                MessageBox.Show("Klasorum isimli dosya oluşturuldu !");

            }
        }

Burada yapılan işlem, bool değişken tip sayesinde klasörün var olup olmadığını sorguladık. Klasör yoksa Directory.CreateDirectory dizine klasör ekledik. Bunu yapmamın sebebi Windows 7 de direk C: dizinine xml gibi dosyaları oluşturma izin vermemesi. Xml dosyamızı bu klasörü oluşturmadan direk dizinde oluşturmaya kalktığımızda hata verecekti.

Gelelim oluşturduğumuz klasöre xml dosyamızı oluşturmaya. Bunun içinde xml oluştur buton clik olayına da alttaki kodları girelim.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private void btnolustur_Click(object sender, EventArgs e)
        {
            if (!File.Exists("c:\\klasorum\\xmldosyam.xml"))
            {
                XmlTextWriter xmlolustur = new XmlTextWriter("c:\\klasorum\\xmldosyam.xml", null);

                xmlolustur.WriteStartDocument();

                xmlolustur.WriteComment("oluşturulan xml hakkında bilgi");

                xmlolustur.WriteStartElement("baslangic");

                xmlolustur.WriteEndDocument();
                xmlolustur.Close();
            }
            else
            {
                MessageBox.Show("Oluşturulmadı");
            }
        }

Buradan daha önceden oluştuduğumuz klasör içine xml uzantılı dosyamızı oluşturduk. Son olarak oluşturulan xml dosya içeriğine veri girmek. Bunun içinde 2 textbox ve buton yardımı ile parametreleri göndererek işlemi bitirebiliriz.

Yapı daha önce denemeyenler için biraz karışık gelmiş olabilir. Ekle butonuna alttaki kodları yazıp uyguladığınızda oluşturduğunuz xml dosyasını inceleyerek karmaşayı çözebilirsiniz.

Bu örnek ile xml nasıl oluşturulur, xml nasıl veri eklenir gibi sorularınızın cevabını vereceğini düşünüyorum.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 private void btnekle_Click(object sender, EventArgs e)
        {
            if (File.Exists("c:\\klasorum\\xmldosyam.xml"))
            {
                XmlDocument doc = new XmlDocument();
                doc.Load("c:\\klasorum\\xmldosyam.xml");


                    XmlElement UserElement = doc.CreateElement("kullanicilar");

                    UserElement.SetAttribute("baslik", "kullanici");

                    XmlElement kullanciadi = doc.CreateElement("adi");
                    kullanciadi.InnerText = textBox1.Text;
                    UserElement.AppendChild(kullanciadi);


                    XmlElement kullanicisoyadi = doc.CreateElement("soyadi");
                    kullanicisoyadi.InnerText = textBox2.Text;
                    UserElement.AppendChild(kullanicisoyadi);

                   
                    doc.DocumentElement.AppendChild(UserElement);

                    XmlTextWriter xmleekle = new XmlTextWriter("c:\\klasorum\\xmldosyam.xml", null);
                    xmleekle.Formatting = Formatting.Indented;
                    doc.WriteContentTo(xmleekle);
                    xmleekle.Close();
                }
        }