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¶
-
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);
-
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);
-
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;
-
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¶
-
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); }
-
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); } }
-
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¶
-
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);
-
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¶
-
Dosya İzinleri
string path = "test.txt"; // Dosya izinlerini alma FileSecurity security = File.GetAccessControl(path); // Dosya izinlerini ayarlama File.SetAccessControl(path, security);
-
Dosya Şifreleme
string path = "test.txt"; // Dosya şifreleme File.Encrypt(path); // Dosya şifre çözme File.Decrypt(path);
Mülakat Soruları¶
- File İşlemleri
- File ve FileInfo sınıfları arasındaki farklar nelerdir?
- File.Exists() ve FileInfo.Exists arasındaki fark nedir?
-
Dosya işlemlerinde exception handling nasıl yapılır?
-
Stream İşlemleri
- Stream nedir ve ne işe yarar?
- FileStream, MemoryStream ve NetworkStream arasındaki farklar nelerdir?
-
Stream'lerde buffer kullanımının önemi nedir?
-
Asenkron İşlemler
- Asenkron dosya işlemleri ne zaman kullanılmalıdır?
- Stream'lerde asenkron işlemler nasıl yapılır?
-
Asenkron işlemlerde exception handling nasıl yapılır?
-
Performans Optimizasyonu
- Büyük dosyaların okunmasında performans optimizasyonu nasıl yapılır?
- Stream'lerde buffer boyutu nasıl belirlenir?
-
Dosya işlemlerinde memory kullanımı nasıl optimize edilir?
-
Güvenlik
- Dosya işlemlerinde güvenlik nasıl sağlanır?
- Dosya izinleri nasıl yönetilir?
-
Dosya şifreleme nasıl yapılır?
-
Dosya Formatları
- Farklı dosya formatları (txt, csv, json vb.) nasıl işlenir?
- Binary dosyalar nasıl okunur ve yazılır?
-
Dosya formatı dönüşümleri nasıl yapılır?
-
Dosya Sistemi
- Dosya sistemi işlemleri nasıl yapılır?
- Klasör işlemleri nasıl yapılır?
-
Dosya sistemi izinleri nasıl kontrol edilir?
-
Hata Yönetimi
- Dosya işlemlerinde karşılaşılan hatalar nelerdir?
- FileNotFoundException nasıl yönetilir?
-
IOException nasıl yönetilir?
-
Resource Yönetimi
- Stream'lerde using bloğu neden önemlidir?
- Dispose pattern nedir ve nasıl uygulanır?
-
Resource leak nasıl önlenir?
-
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ı¶
-
Dosya Kopyalama
public void CopyFile(string sourcePath, string destPath) { // Implementasyon }
-
Dosya Boyutu Kontrolü
public bool IsFileSizeValid(string path, long maxSize) { // Implementasyon }
-
Dosya İçeriği Arama
public bool SearchInFile(string path, string searchText) { // Implementasyon }
-
Dosya Şifreleme
public void EncryptFile(string path, string password) { // Implementasyon }
-
Büyük Dosya Okuma
public async Task<string> ReadLargeFileAsync(string path) { // Implementasyon }