C#'ta Dosya İşleme: G/Ç Opera[Örnekler]

C# çok çeşitli dosya işlemlerine sahiptir. Bu işlemler arasında bir dosyanın açılması, bir dosyanın okunması veya dosyaya yazılması yer alır. Dosyalarla doğrudan çalışmak istediğiniz durumlar olabilir; bu durumda C#'ta mevcut olan dosya işlemlerini kullanırsınız. Temel dosya işlemlerinden bazıları aşağıda belirtilmiştir.

  1. Okuma – Bu işlem, verilerin bir dosyadan okunduğu temel okuma işlemidir.
  2. Yazma – Bu işlem, verilerin bir dosyaya yazıldığı temel yazma işlemidir. Varsayılan olarak tüm mevcut içerikler dosyadan kaldırılır ve yeni içerik yazılır.
  3. Ekleme – Bu işlem aynı zamanda bir dosyaya bilgi yazmayı da içerir. Tek fark, dosyadaki mevcut verilerin üzerine yazılmamasıdır. Yazılacak yeni veriler dosyanın sonuna eklenir.

Temel G/Ç Komutları

C# ve .Net, çeşitli Dosya G/Ç komutlarının yardımıyla dosyalarla çalışabilir. Bu komutlardan bazılarına bir göz atalım. Örneğimiz için D sürücüsünde Örnek.txt adında bir dosyamızın olduğunu varsayacağız.
Dosya basit bir metin dosyası olacak ve aşağıda gösterildiği gibi 2 satırdan oluşacaktır.

  • Guru99 – .Net
  • Guru99 -C#

Örneğimiz için basit bir Konsol uygulaması oluşturup Dosya I/O komutlarımızla çalışacağız. Konsol uygulaması önceki eğitimde oluşturulan temel uygulamadır. Konsol uygulamasında tüm kod program.cs dosyasına yazılır.

Dosya var

Dosya mevcut yöntemi, belirli bir dosyanın var olup olmadığını kontrol etmek için kullanılır. Şimdi Örnek.txt dosyamızın var olup olmadığını kontrol etmek için kullanılabilecek kodu görelim. Program.cs dosyasına aşağıdaki kodu girin.

Dosya var

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  static void Main(string[] args)
  {
   String path = @"D:\Example.txt";
   
   if (File.Exists(path))
   {
    Console.WriteLine("File Exists");
   }
   Console.ReadKey();
  }
 }
}

Kod Açıklaması:-

  1. Öncelikle Örnek.txt dosyamızın yolunu içeren bir string değişkeni ayarlıyoruz.
  2. Daha sonra dosyanın var olup olmadığını kontrol etmek için File.Exists metodunu kullanıyoruz. Dosya mevcutsa gerçek bir değer döndürülür.
  3. Eğer true değeri alırsak ve dosya mevcutsa konsola “File Exists” mesajını yazıyoruz.

Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında aşağıdaki çıktıyı alacaksınız.

Çıktı:-

Dosya var

Yukarıdaki çıktıdan File.Exists komutunun başarıyla yürütüldüğünü ve konsol penceresinde doğru mesajın görüntülendiğini görebilirsiniz.

Dosya.ReadAlllines

Yöntem, bir dosyadaki tüm satırları tek tek okumak için kullanılır. Satırlar daha sonra bir dize dizisi değişkeninde saklanır. Bir örneğe bakalım. Program.cs dosyasına aşağıdaki kodu girin.

Dosya.ReadAlllines

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  static void Main(string[] args)
  {
   String path = @"D:\Example.txt";

   String[] lines;
   lines = File.ReadAllLines(path);

   Console.WriteLine(lines[0]);
   Console.WriteLine(lines[1]);

   Console.ReadKey();
  }
 }
}

Kod Açıklaması:-

  1. Öncelikle bir string dizi değişkeni tanımlıyoruz. Bu, File.ReadAllLines yöntemi tarafından döndürülecek sonucu depolamak için kullanılacaktır.
  2. Daha sonra metin dosyamızdaki tüm satırları okumak için File.ReadAllLines yöntemini kullanıyoruz. Sonuç daha sonra satır değişkenine iletilir.
  3. Dosyamızın sadece 2 satırdan oluştuğunu bildiğimiz için, dizi değişkenlerinin değerinelines[0] velines[1] komutu ile ulaşabiliyoruz.

Yukarıdaki kod ayarlandığında ve proje kullanılarak çalıştırıldığında Visual Studio, aşağıdaki çıktıyı alacaksınız.

Çıktı:-

Dosya.ReadAlllines

Çıktıdan, File.ReadAllLines komutunun Örnek.txt dosyamızdaki her iki satırı da döndürdüğünü görebilirsiniz.

Dosya.ReadAllText

Bu yöntem bir dosyadaki tüm satırları aynı anda okumak için kullanılır. Satırlar daha sonra bir dize değişkeninde saklanır. Bir örneğe bakalım. Program.cs dosyasına aşağıdaki kodu girin.

Dosya.ReadAllText

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    String lines;
    lines = File.ReadAllText(path);
    Console.WriteLine(lines);
 
    Console.ReadKey();
   }
  }
}

Kod Açıklaması:-

  1. Öncelikle Lines adında bir string değişkeni tanımlıyoruz. Bu, File.ReadAllText yöntemi tarafından döndürülecek sonucu depolamak için kullanılacaktır.
  2. Daha sonra metin dosyamızdaki tüm satırları okumak için File.ReadAllText yöntemini kullanıyoruz. Sonuç daha sonra satır değişkenine iletilir.
  3. Lines değişkeninin değerini görüntülemek için doğrudan Console.Writeline yöntemini kullanabiliriz.

Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında aşağıdaki çıktıyı alacaksınız.

Çıktı:-

Dosya.ReadAllText

Çıktıdan, File.ReadAlltext komutunun Örnek.txt dosyamızdaki her iki satırı da döndürdüğünü görebilirsiniz.

Dosya.Kopyala

Yöntem mevcut bir dosyanın kopyasını oluşturmak için kullanılır. Bir örneğe bakalım. Program.cs dosyasına aşağıdaki kodu girin.

Dosya.Kopyala

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
   String path = @"D:\Example.txt";

   String copypath = @"D:\ExampleNew.txt";

   File.Copy(path,copypath);

   Console.ReadKey();
   }
  }
}

Kod Açıklaması:-

  1. Öncelikle path adında bir string değişkeni bildiriyoruz. Bu, Örnek.txt dosyamızın konumu olacaktır. Bu dosya kopyalama işlemi için kullanılan kaynak dosya olacaktır.
  2. Daha sonra, copypath adı verilen bir dize değişkeni bildiriyoruz. Bu, SampleNew.txt dosyası adı verilen yeni bir dosyanın konumu olacaktır. Bu, içeriğin Sample.txt kaynak dosyasından yazılacağı hedef dosya olacaktır.
  3. Daha sonra Örnek.txt dosyasını ÖrnekYeni.txt dosyasına kopyalamak için File.Copy yöntemini çağırıyoruz.

Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında Example.txt dosyası ExampleNew.txt dosyasına kopyalanacaktır.

Dosya.Sil

Yöntem mevcut bir dosyayı silmek için kullanılır. Bir örneğe bakalım. Program.cs dosyasına aşağıdaki kodu girin.

Dosya.Sil

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
   String path = @"D:\Example.txt";

   File.Delete(path);

   Console.ReadKey();
   }
  }
}

Kod Açıklaması:-

  1. Öncelikle path adında bir string değişkeni bildiriyoruz. Bu, Örnek.txt dosyamızın konumu olacaktır. Bu silinecek dosyadır.
  2. Daha sonra dosyayı silmek için File.Delete metodunu çağırıyoruz.

Yukarıdaki kod ayarlandığında ve proje Visual Studio kullanılarak çalıştırıldığında, Example.txt dosyası D sürücüsünden silinecektir.

ÖZET

  • C#, dosyalar üzerinde gerçekleştirilebilecek çok sayıda Dosya işlemine sahiptir. Bu işlemlerin çoğu File sınıfının bir parçasıdır.
  • Bir dosyadan veri okumak istiyorsanız File.ReadAlltext veya File.ReadAllLines yöntemlerini kullanabilirsiniz.
Dosya Yöntemi Tanım
Dosya var Dosya mevcut yöntemi, belirli bir dosyanın var olup olmadığını kontrol etmek için kullanılır.
Dosya.ReadAlllines Yöntem, bir dosyadaki tüm satırları tek tek okumak için kullanılır.
Dosya.ReadAllText Bu yöntem bir dosyadaki tüm satırları aynı anda okumak için kullanılır.
Dosya.Kopyala Yöntem mevcut bir dosyanın kopyasını oluşturmak için kullanılır.
Dosya.Sil Yöntem mevcut bir dosyayı silmek için kullanılır.