IRONSOFTWAREHOME

C# Sistem Dosyasını Ustalaşmak

Mastering C# System File

Tim Corey

35m 07s

C#, dosya sistemiyle etkileşim kurmak için sağlam yetenekler sağlar; dosya manipülasyonu, dizin yönetimi ve bilgi alma gibi görevleri mümkün kılar. Tim Corey, "Working With The File System in C# - Managing Folders and Files" başlıklı videosunda C# kullanarak dosyalar ve dizinlerle çalışma temellerini inceler.

Bu makale, C#'daki dosya sistemi işlemlerine genel bir bakış sağlamayı ve görevlerin otomasyonunu, dizinlerin yönetimini ve dosyaların ele alınmasını vurgulamayı amaçlar.

Giriş

C#'ta, System.IO ad alanı dosya sistemiyle etkileşim kurmak için güçlü sınıflar sağlar. Bu sınıflar, File, FileInfo, Directory ve DirectoryInfo gibi, dosya oluşturma, verileri okuma, dosyalara yazma ve belirtilen bir yolda belirtilen bir dosyanın zaten mevcut olup olmadığını kontrol etme gibi çeşitli dosya işlemleri yapmanızı sağlar. Bu sınıfları kullanarak, metin dosyaları, ikili dosyalar ve çeşitli uzantılı dosyalarla çalışabilirsiniz. Create(), Exists() ve Delete() gibi yöntemler, geliştiricilerin dosyaları ve dizinleri etkili bir şekilde yönetmelerine olanak tanır.

Örneğin, File sınıfı, bir dosyanın zaten mevcut olup olmadığını kontrol etmek, yeni bir dosya oluşturmak veya farklı modlarda (okuma, yazma veya ekleme gibi) dosya açmak için statik yöntemler içerir. FileInfo sınıfını kullanarak bir dosya hakkında daha fazla ayrıntı, örneğin oluşturulma zamanı veya tam yolunu alabilirsiniz. DirectoryInfo sınıfı, dizinlerle çalışmanıza, dosyaları almanıza veya yeni dizinler oluşturmanıza olanak tanır. Bu sınıflar ve yöntemler, mevcut dosyalar ve yeni dosyaları ele almak, birden fazla dosyayı yönetmek ve hatta bayt düzeyinde dosya verilerini işlemek için esneklik sağlar, bu da C#'ı dosya sistemi işlemleri için güçlü bir araç haline getirir.

Tim, C#'ın dosya görevlerini otomatikleştirmek için güçlü özelliklerini, yedekleme oluşturma, dosyaları düzenleme ve dosya bilgilerini alma gibi örneklerle vurgulayarak başlar. Pratik örnekler ve eğitim kaynakları ile C# öğrenmeyi kolaylaştırma amacını belirterek videoyu tanıtır.

Bir Demo Konsol Uygulaması Oluşturma

Tim, .NET Framework kullanarak "FileSystemDemo" adlı yeni bir konsol uygulaması oluşturarak işe sıfırdan başlar. Bu gösterim için .NET Core yerine .NET Framework'ü tercih ettiğini vurgular.

using System;
using System.IO;

namespace FileSystemDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.ReadLine();
        }
    }
}

Kök Yolunu Ayarlama

Tim, demoyu için sistemindeki belirli bir dizine işaret eden bir kök yol değişkeni ayarlıyor.

string rootPath = @"C:\temp\demos\filesystem";

@ sembolünün, yolda geriye eğik çizgilerin kaçış karakteri olmadan kullanılmasına izin verdiğini açıklıyor.

Yoldaki Tüm Dizinleri Okuma

Tim, belirtilen kök yolda tüm dizinlerin nasıl alınacağını, Directory.GetDirectories yöntemi kullanarak gösteriyor.

string[] directories = Directory.GetDirectories(rootPath);
foreach (string directory in directories)
{
    Console.WriteLine(directory);
}

Bu kod, kök dizindeki tüm alt dizinlerin tam yollarını yazdırır.

Dizin Listesi

Alt Dizinleri Özyinelemeli Olarak Okuma

Aramaya alt dizinleri dahil etmek için Tim, arama desenini ve arama seçeneklerini GetDirectories yöntemine ekliyor.

string[] allDirectories = Directory.GetDirectories(rootPath, "*", SearchOption.AllDirectories);
foreach (string directory in allDirectories)
{
    Console.WriteLine(directory);
}

Bu değişiklik, aramanın tüm iç içe alt dizinleri dahil etmesini sağlar.

Yoldaki Tüm Dosyaları Okuma

Tim, dizin sınıfı ve belirtilen kök yoldaki tüm dosyaların nasıl alınacağını, Directory.GetFiles yöntemi kullanarak gösteriyor.

string[] files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories);
foreach (string file in files)
{
    Console.WriteLine(file);
}

Bu kod, kök dizin ve alt dizinlerindeki tüm dosyaların tam yollarını yazdırır.

Dosya Listesi

Dosya Adlarını ve Yollarını Çıkarma

Tim, dosya adlarını ve yollarını çıkarmak için Path sınıfını nasıl kullanacağınızı açıklıyor. Bu, dosya uzantısı olmadan dosya adını ve her dosyanın dizin adını almayı içerir.

foreach (string file in files)
{
    Console.WriteLine(Path.GetFileName(file)); // File name with extension
    Console.WriteLine(Path.GetFileNameWithoutExtension(file)); // File name without extension
    Console.WriteLine(Path.GetDirectoryName(file)); // Directory name
}

Bu kod parçacığı, belirtilen yoldaki aynı dosyanın farklı bölümlerini nasıl çıkaracağınızı ve yazdıracağınızı gösterir.

Dosya Bilgilerini Alma

Tim, (12:10) FileInfo sınıfını kullanarak bir dosya hakkında ayrıntılı bilgilerin nasıl alınacağını gösteriyor. Bu, dosya boyutunu, son erişim zamanını, oluşturulma zamanını ve diğer niteliklerini almayı içerir.

foreach (string file in files)
{
    FileInfo info = new FileInfo(file);
    Console.WriteLine($"{Path.GetFileName(file)}: {info.Length} bytes");
}

Bu kod parçacığı dosya adı ve boyutunu bayt olarak yazdırır. Tim, bu boyutu tekrar tekrar 1024'e bölerek kilobayt veya megabayt cinsinden dönüştürebileceğinizi belirtir.

FileInfo sınıfının başka kullanışlı özellikler sağladığını daha ayrıntılı açıklıyor:

  • LastWriteTime: Dosyanın son değiştirilme zamanı.

  • LastAccessTime: Dosyanın son erişilme zamanı.

  • CreationTime: Dosyanın oluşturulma zamanı.

  • Attributes: Dosya öznitelikleri, örneğin salt okunur veya arşiv.

Automating File System Tasks with C#

Tim (15:11)'de C#'ı kullanarak çeşitli dosya sistemi görevlerini otomatikleştirme yöntemlerini tartışır. Bu, dizin oluşturmayı, dosyaların veya dizinlerin varlığını doğrulamayı ve diğer tekrar eden görevleri içerebilir.

Bir Dizin Var Mı Doğrulama

Tim, Directory.Exists yöntemi kullanarak bir dizinin mevcut olup olmadığını nasıl kontrol edeceğinizi gösteriyor. Bu, operasyonlar gerçekleştirmeden önce gerekli dizinlerin varlığını garanti etmek için faydalıdır.

string newPath = @"C:\temp\demos\filesystem\subfolderC";
if (Directory.Exists(newPath))
{
    Console.WriteLine("Directory exists");
}
else
{
    Console.WriteLine("Directory does not exist");
}

Bu kod, bir dizinin varlığını kontrol eder ve uygun bir mesaj yazdırır.

Yeni Bir Dizin Oluşturma

Tim, Directory.CreateDirectory yöntemi kullanarak yeni bir dizin nasıl oluşturulacağını açıklıyor. Bu yöntem, belirtilen yolda zaten yoksa tüm dizinleri ve alt dizinleri oluşturur.

string newPath = @"C:\temp\demos\filesystem\subfolderC\sub-subfolderD";
Directory.CreateDirectory(newPath);
Console.WriteLine("Directories created");

Tim, bu yöntemin belirtilmiş olan yol ve alt dizinleri var olan herhangi bir dosya veya dizin üzerine yazmadan oluşturduğunu gösteriyor.

Dosyaları Kopyalama

Tim, (21:35) File.Copy yöntemi kullanarak dosyaların bir dizinden diğerine nasıl kopyalanacağını gösteriyor. Bu, dosyaları yedeklemek veya farklı klasörlere dosya düzenlemek için faydalı olabilir.

string[] files = Directory.GetFiles(rootPath);
string destinationFolder = Path.Combine(rootPath, "subfolderA");

foreach (string file in files)
{
    string destFile = Path.Combine(destinationFolder, Path.GetFileName(file));
    File.Copy(file, destFile, true);
}

Bu örnekte, dosyalar kök dizinden subfolderA'a kopyalanır ve var olan dosyalar true parametresi sayesinde üzerine yazılır.

Kopyalama Sırasında Dosyaları Yeniden Adlandırma

Tim ayrıca bir for döngüsü ve bir indeks kullanarak kopyalama işlemi sırasında dosyaları nasıl yeniden adlandıracağınızı gösteriyor.

for (int i = 0; i < files.Length; i++)
{
    string destFile = Path.Combine(destinationFolder, $"{i}.txt");
    File.Copy(files[i], destFile, true);
}

Bu kod, dosyaları hedef dizine kopyalar ve isimlerini sırasıyla 0.txt, 1.txt vb. olarak yeniden adlandırır.

Dosya Üzerine Yazmayı Yönetme

Tim, mevcut dosyaları üzerine yazmadan nasıl yönetileceğini ve istisnalardan nasıl kaçınılacağını false parametresini ayarlayarak açıklıyor. Bu, var olan dosyaların üzerine yazılmasını önler ve bir dosya zaten varsa bir istisna atar.

try
{
    File.Copy(sourceFile, destFile, false);
}
catch (IOException ex)
{
    Console.WriteLine($"File already exists: {ex.Message}");
}

Bu yaklaşım dosya kopyalarını güvenli bir şekilde yönetmeye ve dosyaların üzerine yazılmaması gerektiği durumlardan kaçınmaya yardımcı olur.

Dosya Taşıma

Tim, (28:28) File.Move yöntemi kullanarak dosyaların nasıl taşınacağını gösteriyor. File.Copy'den farklı olarak, File.Move yöntemi bir üzerine yazma seçeneğine sahip değildir ve hedef dosya zaten mevcutsa bir istisna atar.

string[] files = Directory.GetFiles(rootPath);
string destinationFolder = Path.Combine(rootPath, "subfolderA");

foreach (string file in files)
{
    string destFile = Path.Combine(destinationFolder, Path.GetFileName(file));
    File.Move(file, destFile);
}

Bu kod, dosyaları kök dizinden subfolderA'a taşır ve kaynak dizinden kaldırır.

Yardımcı Uygulamalar Oluşturma

Tim, geliştiricileri C#'ı dosya sistemi görevlerini otomatikleştirmek ve yardımcı uygulamalar oluşturmak için çeşitli yollar düşünmeye teşvik eder. Basit görevlerle başlamayı ve giderek daha karmaşık otomasyon çözümleri geliştirmeyi önerir.

Yardımcı uygulama örnekleri:

  • Geçici Dosyaları Temizleme: Geçici dosyaları silme sürecini otomatikleştirerek boş alan yaratın.

  • Harici Sürücülere Yedekleme: Önemli dosyaları harici bir sürücüye kopyalayan bir yedekleme aracı oluşturun.

  • Proje Klasörü Eşitleme: Bilgisayar ve genişletilmiş sürücü arasında proje klasörlerini senkronize edin, böylece en son değişikliklerin her zaman yedeklenip geri yüklendiğinden emin olun.

Sonuç

Tim Corey'nin C#'taki dosya sistemi işlemlerinin keşfi, dosya görevlerinin otomasyonunu ve dizin yönetimini içerecek pratik içgörüler sunar. Örneklerini takip ederek, geliştiriciler rutin dosya yönetim görevlerini verimli bir şekilde otomatikleştirebilir ve özel yardımcı uygulamalar oluşturabilir.

Bu kavramların derinlemesine anlaşılması ve eylemde görülmesi için Tim Corey'nin videosunun tamamını izlemenizi şiddetle tavsiye ederim. Ayrıntılı buraya yürüyüşler ve pratik örnekler, anlamanızı pekiştirmenize ve kendi dosya yönetimi uygulamalarınızı geliştirmenize yardımcı olacaktır.

Earn More by Sharing What You Love

Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Let's Stay in Touch!

Join our newsletter, you’ll get exclusive access on article updates. We value your privacy

Key in blue circle

Ücretsiz 30 günlük Deneme Anahtarınızı anında edinin.

Your trial license will be sent to your email address

Herhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.

bullet_checkedKredi kartı veya hesap oluşturma gerektirmezHerhangi bir sınırlama yoktur. %100 erişim. Kredi kartı gerekmez.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Bağımsız Danışmanlık Alın
Aşağıdaki formu doldurun veya sales@ironsoftware.com adresine e-posta gönderin
Bilgileriniz daima gizli kalacaktır.
Dünya Çapında Milyonlarca Mühendisin Güvendiği
Iron Software müşteri logoları
Ücretsiz 30 Günlük Deneme Anahtarınızı anında alın.
Kredi kartı veya hesap oluşturma gerektirmez