Skip to content

File ve Stream İşlemleri

Genel Bakış

File ve Stream işlemleri, dosya sisteminde veri okuma ve yazma işlemlerini gerçekleştirmek için kullanılan temel operasyonlardır. C#'ta System.IO namespace'i altında bulunan sınıflar kullanılarak dosya ve stream işlemleri yapılır.

File İşlemleri

  1. Dosya Oluşturma ve Silme

    // Dosya oluşturma
    string path = "test.txt";
    File.Create(path);
    
    // Dosya silme
    File.Delete(path);
    
    // Dosya var mı kontrolü
    bool exists = File.Exists(path);
    

  2. Dosya Kopyalama ve Taşıma

    string sourcePath = "source.txt";
    string destPath = "dest.txt";
    
    // Dosya kopyalama
    File.Copy(sourcePath, destPath);
    
    // Dosya taşıma
    File.Move(sourcePath, destPath);
    

  3. Dosya Özellikleri

    string path = "test.txt";
    
    // Oluşturma tarihi
    DateTime creationTime = File.GetCreationTime(path);
    
    // Son erişim tarihi
    DateTime lastAccessTime = File.GetLastAccessTime(path);
    
    // Son değişiklik tarihi
    DateTime lastWriteTime = File.GetLastWriteTime(path);
    
    // Dosya boyutu
    long fileSize = new FileInfo(path).Length;
    

  4. Dosya Okuma ve Yazma

    string path = "test.txt";
    
    // Dosyaya yazma
    File.WriteAllText(path, "Merhaba Dünya");
    
    // Dosyadan okuma
    string content = File.ReadAllText(path);
    
    // Satır satır okuma
    string[] lines = File.ReadAllLines(path);
    
    // Byte array olarak okuma
    byte[] bytes = File.ReadAllBytes(path);
    

Stream İşlemleri

  1. FileStream Kullanımı

    string path = "test.txt";
    
    // Stream oluşturma
    using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate))
    {
        // Byte array yazma
        byte[] data = Encoding.UTF8.GetBytes("Merhaba Dünya");
        stream.Write(data, 0, data.Length);
    
        // Byte array okuma
        byte[] buffer = new byte[stream.Length];
        stream.Read(buffer, 0, buffer.Length);
        string content = Encoding.UTF8.GetString(buffer);
    }
    

  2. StreamReader ve StreamWriter

    string path = "test.txt";
    
    // StreamWriter ile yazma
    using (StreamWriter writer = new StreamWriter(path))
    {
        writer.WriteLine("Satır 1");
        writer.WriteLine("Satır 2");
    }
    
    // StreamReader ile okuma
    using (StreamReader reader = new StreamReader(path))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            Console.WriteLine(line);
        }
    }
    

  3. MemoryStream Kullanımı

    using (MemoryStream stream = new MemoryStream())
    {
        // Stream'e yazma
        byte[] data = Encoding.UTF8.GetBytes("Merhaba Dünya");
        stream.Write(data, 0, data.Length);
    
        // Stream'den okuma
        stream.Position = 0;
        byte[] buffer = new byte[stream.Length];
        stream.Read(buffer, 0, buffer.Length);
        string content = Encoding.UTF8.GetString(buffer);
    }
    

Asenkron Dosya İşlemleri

  1. Asenkron Okuma ve Yazma

    string path = "test.txt";
    
    // Asenkron yazma
    await File.WriteAllTextAsync(path, "Merhaba Dünya");
    
    // Asenkron okuma
    string content = await File.ReadAllTextAsync(path);
    

  2. Asenkron Stream İşlemleri

    string path = "test.txt";
    
    using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate))
    {
        // Asenkron yazma
        byte[] data = Encoding.UTF8.GetBytes("Merhaba Dünya");
        await stream.WriteAsync(data, 0, data.Length);
    
        // Asenkron okuma
        byte[] buffer = new byte[stream.Length];
        await stream.ReadAsync(buffer, 0, buffer.Length);
        string content = Encoding.UTF8.GetString(buffer);
    }
    

Dosya Güvenliği

  1. Dosya İzinleri

    string path = "test.txt";
    
    // Dosya izinlerini alma
    FileSecurity security = File.GetAccessControl(path);
    
    // Dosya izinlerini ayarlama
    File.SetAccessControl(path, security);
    

  2. Dosya Şifreleme

    string path = "test.txt";
    
    // Dosya şifreleme
    File.Encrypt(path);
    
    // Dosya şifre çözme
    File.Decrypt(path);
    

Mülakat Soruları

  1. File İşlemleri
  2. File ve FileInfo sınıfları arasındaki farklar nelerdir?
  3. File.Exists() ve FileInfo.Exists arasındaki fark nedir?
  4. Dosya işlemlerinde exception handling nasıl yapılır?

  5. Stream İşlemleri

  6. Stream nedir ve ne işe yarar?
  7. FileStream, MemoryStream ve NetworkStream arasındaki farklar nelerdir?
  8. Stream'lerde buffer kullanımının önemi nedir?

  9. Asenkron İşlemler

  10. Asenkron dosya işlemleri ne zaman kullanılmalıdır?
  11. Stream'lerde asenkron işlemler nasıl yapılır?
  12. Asenkron işlemlerde exception handling nasıl yapılır?

  13. Performans Optimizasyonu

  14. Büyük dosyaların okunmasında performans optimizasyonu nasıl yapılır?
  15. Stream'lerde buffer boyutu nasıl belirlenir?
  16. Dosya işlemlerinde memory kullanımı nasıl optimize edilir?

  17. Güvenlik

  18. Dosya işlemlerinde güvenlik nasıl sağlanır?
  19. Dosya izinleri nasıl yönetilir?
  20. Dosya şifreleme nasıl yapılır?

  21. Dosya Formatları

  22. Farklı dosya formatları (txt, csv, json vb.) nasıl işlenir?
  23. Binary dosyalar nasıl okunur ve yazılır?
  24. Dosya formatı dönüşümleri nasıl yapılır?

  25. Dosya Sistemi

  26. Dosya sistemi işlemleri nasıl yapılır?
  27. Klasör işlemleri nasıl yapılır?
  28. Dosya sistemi izinleri nasıl kontrol edilir?

  29. Hata Yönetimi

  30. Dosya işlemlerinde karşılaşılan hatalar nelerdir?
  31. FileNotFoundException nasıl yönetilir?
  32. IOException nasıl yönetilir?

  33. Resource Yönetimi

  34. Stream'lerde using bloğu neden önemlidir?
  35. Dispose pattern nedir ve nasıl uygulanır?
  36. Resource leak nasıl önlenir?

  37. Best Practices

    • Dosya işlemlerinde best practices nelerdir?
    • Stream kullanımında dikkat edilmesi gerekenler nelerdir?
    • Dosya işlemlerinde performans ve güvenlik nasıl dengelenir?

Örnek Kod Soruları

  1. Dosya Kopyalama

    public void CopyFile(string sourcePath, string destPath)
    {
        // Implementasyon
    }
    

  2. Dosya Boyutu Kontrolü

    public bool IsFileSizeValid(string path, long maxSize)
    {
        // Implementasyon
    }
    

  3. Dosya İçeriği Arama

    public bool SearchInFile(string path, string searchText)
    {
        // Implementasyon
    }
    

  4. Dosya Şifreleme

    public void EncryptFile(string path, string password)
    {
        // Implementasyon
    }
    

  5. Büyük Dosya Okuma

    public async Task<string> ReadLargeFileAsync(string path)
    {
        // Implementasyon
    }
    

Kaynaklar