FileStream sınıfına Kaydet() ExtensionMethod’u yazalım
FileStream sınıfına yazacağımız Save() method’u sayesinde, aşağıdaki kodu kolaylıkla yazabilir olacağız. Üstelik bir tane de overload yazarak, varolan dosyanın üstüne yazmasını engelleyip, yeni bir dosya adı oluşturup yazma işlemine devam ettirebileceğiz.
fs.Kaydet("c:\\dosya_adi.uzanti");
Eğer aynı kodu, ikinci bir boolean parametreye true değeri vererek çağırırsak, klasörde dosya_adi.uzanti dosyası varsa dosya_adi[1].uzanti dosyasına yazmayı deneyecek, eğer bu dosya da varsa, dosya_adi[2].uzanti dosyasına deneyecek, vs..
fs.Kaydet("c:\\dosya_adi.uzanti", true);
İşte kodumuz;
namespace ExtensionManager
{
public static class Extensions
{
public static string Kaydet(this FileStream Dosya, string Dizin)
{
return Dosya.Kaydet(Dizin, false);
}
public static string Kaydet(this FileStream Dosya, string Dizin, bool UstuneYaz)
{
int DosyaSayac = 1;
string _Dizin = Path.GetDirectoryName(Dizin);
if (!Directory.Exists(_Dizin))
Directory.CreateDirectory(_Dizin);
int DosyaBoyu = Convert.ToInt32(Dosya.Length);
string DosyaAdi = Path.GetFileName(Dosya.Name);
Byte[] b = new Byte[DosyaBoyu];
Dosya.Read(b, 0, DosyaBoyu);
string root = Path.GetDirectoryName(Dizin) + "\\" + Path.GetFileNameWithoutExtension(Dizin);
while (!UstuneYaz && File.Exists(Dizin))
Dizin = root + "[" + DosyaSayac++.ToString() + "]" + Path.GetExtension(Dizin);
File.WriteAllBytes(Dizin, b);
return Path.GetFileName(Dizin);
}
}
}
İlgili diğer başlıklar:
- C# ile Geçici Dosya Oluşturmak
- C# ile Geçici Dosya (Temporary File) oluşturma sınıfı yazalım
- C# ile string sınıfına ContainsText isimli ExtensionMethod yazalım
- Hem benzersiz hem de geçici dosya oluşturmanın en kolay yolu
- C# Klasörün Sadece-Okunabilir Olduğunu Döndüren Extension Method
- Generic Dictionary sınıfına karıştırıcı (shuffle) Extension Method yazalım
- Birkaç Faydalı Extension Method
- Bu kodda ne yanlış var? – 9
- C# ile isNumeric() fonksiyonu yazalım
- LINQ ile Dosya Sisteminde Sorgulama Yapmak