Konuyu Açan
#0
Asenkron programlamanın hayatımıza girmesiyle birlikte, dosya işlemleri söz konusu olduğunda daha verimli ve hızlı çözümler geliştirmek mümkün hale geldi. C# kullanarak FileStream sınıfı ile dosya okuma ve yazma işlemlerini nasıl asenkron olarak gerçekleştirebileceğimize bakalım. Bu yöntem, özellikle büyük boyutlu dosyaların yönetiminde, bellek kullanımı açısından ciddi avantajlar sağlıyor. Düşünsenize, dosyanızı okurken kullanıcı arayüzünüz donmuyor, işlerinizi aksatmadan devam ettirebiliyorsunuz...
FileStream ile dosya okuma işlemi aslında oldukça basit. Aslında, bir dosyayı asenkron olarak okumak için öncelikle bir FileStream nesnesi oluşturmanız gerekiyor. `FileStream` sınıfı, dosyayı açmak için gerekli parametreleri alırken, asenkron okuma işlemlerinde kullanmak üzere `FileAccess.Read` erişim modunu belirlemek oldukça önemli. Dosyanın boyutuna göre, buffer boyutunu ayarlamak da önemli bir detay. Örneğin, 4096 byte’lık bir buffer ile başlamak, çoğu senaryoda yeterli olacaktır. Ancak, ihtiyaç durumuna göre bu değeri artırmak ya da azaltmak mümkün...
Bir dosyadan asenkron olarak veri okumak için `ReadAsync` metodunu kullanıyoruz. Bu metot, belirttiğimiz buffer’a verileri yüklerken, çalışmayı durdurmadan diğer işlemleri gerçekleştirmeye devam etmemizi sağlıyor. Yani, kullanıcı arayüzü, okuma işlemi devam ederken yine de etkileşimde bulunabilen bir yapıda kalıyor. Asenkron metotları kullanırken, `async` ve `await` Dosya yazma işlemi için de benzer bir yaklaşım izleniyor. `FileStream` nesnesini oluşturduktan sonra, `FileAccess.Write` erişim modunu belirlemek gerekiyor. Burada asıl dikkat edilmesi gereken nokta, yazmak istediğiniz verinin tipine uygun olarak bir buffer oluşturmak. Burada dikkatlice seçtiğiniz buffer boyutu, yazma işleminizin verimliliğini etkileyebilir. Verileri dosyaya yazmak için `WriteAsync` metodunu kullanıyoruz. Yine, `await` anahtar kelimesi ile birlikte kullanıldığında, yazma işlemi tamamlanmadan diğer işlemlerimizi sürdürebiliyoruz. Örneğin, `await fileStream.WriteAsync(buffer, 0, buffer.Length)` ifadesi ile verimizi dosyaya kaydediyoruz...
Dosya işlemleri sırasında kritik olan bir diğer konu ise, dosyanın düzgün bir şekilde kapatılması. Bu işlemi yapmak için `using` bloğunu kullanmak oldukça pratik bir çözüm. Bu yapı, dosyayı kullandıktan sonra otomatik olarak kapatmanızı sağlıyor. Yani, hata yapsanız bile dosya kaynakları düzgün bir şekilde serbest bırakılıyor. Kısacası, asenkron dosya okuma ve yazma işlemleri, performansı artırmanın yanı sıra, daha kullanıcı dostu bir deneyim sunuyor. Uygulamanızda bu teknikleri kullanmayı unutmayın...
FileStream ile dosya okuma işlemi aslında oldukça basit. Aslında, bir dosyayı asenkron olarak okumak için öncelikle bir FileStream nesnesi oluşturmanız gerekiyor. `FileStream` sınıfı, dosyayı açmak için gerekli parametreleri alırken, asenkron okuma işlemlerinde kullanmak üzere `FileAccess.Read` erişim modunu belirlemek oldukça önemli. Dosyanın boyutuna göre, buffer boyutunu ayarlamak da önemli bir detay. Örneğin, 4096 byte’lık bir buffer ile başlamak, çoğu senaryoda yeterli olacaktır. Ancak, ihtiyaç durumuna göre bu değeri artırmak ya da azaltmak mümkün...
Bir dosyadan asenkron olarak veri okumak için `ReadAsync` metodunu kullanıyoruz. Bu metot, belirttiğimiz buffer’a verileri yüklerken, çalışmayı durdurmadan diğer işlemleri gerçekleştirmeye devam etmemizi sağlıyor. Yani, kullanıcı arayüzü, okuma işlemi devam ederken yine de etkileşimde bulunabilen bir yapıda kalıyor. Asenkron metotları kullanırken, `async` ve `await` Dosya yazma işlemi için de benzer bir yaklaşım izleniyor. `FileStream` nesnesini oluşturduktan sonra, `FileAccess.Write` erişim modunu belirlemek gerekiyor. Burada asıl dikkat edilmesi gereken nokta, yazmak istediğiniz verinin tipine uygun olarak bir buffer oluşturmak. Burada dikkatlice seçtiğiniz buffer boyutu, yazma işleminizin verimliliğini etkileyebilir. Verileri dosyaya yazmak için `WriteAsync` metodunu kullanıyoruz. Yine, `await` anahtar kelimesi ile birlikte kullanıldığında, yazma işlemi tamamlanmadan diğer işlemlerimizi sürdürebiliyoruz. Örneğin, `await fileStream.WriteAsync(buffer, 0, buffer.Length)` ifadesi ile verimizi dosyaya kaydediyoruz...
Dosya işlemleri sırasında kritik olan bir diğer konu ise, dosyanın düzgün bir şekilde kapatılması. Bu işlemi yapmak için `using` bloğunu kullanmak oldukça pratik bir çözüm. Bu yapı, dosyayı kullandıktan sonra otomatik olarak kapatmanızı sağlıyor. Yani, hata yapsanız bile dosya kaynakları düzgün bir şekilde serbest bırakılıyor. Kısacası, asenkron dosya okuma ve yazma işlemleri, performansı artırmanın yanı sıra, daha kullanıcı dostu bir deneyim sunuyor. Uygulamanızda bu teknikleri kullanmayı unutmayın...