C# ile ListBox İçeriğini Dosyaya Kaydetme
Kullandığımız metotlar şunlar:
listBox1.Items.CopyTo(object[] destination, int arrayIndex);
System.IO.File.WriteAllLines(string path, string[] contents);
CopyTo() Metodu
CopyTo() metodu, bir koleksiyon içerisindeki elemanları belirtilen bir diziye kopyalamak için kullanılır.
Parametreleri şunlardır:
- destination : Verilerin kopyalanacağı dizi.
- arrayIndex : Kopyalama işleminin dizinin hangi indisinden başlayacağını belirtir.
Örneğin 0 değeri verilirse, tüm elemanlar dizinin ilk elemanından itibaren kopyalanmaya başlanır.
WriteAllLines() Metodu
WriteAllLines() metodu, bir dizi içerisindeki her elemanı dosyaya ayrı bir satır olarak yazar.
İlk parametre oluşturulacak dosyanın yolunu belirtir.
Örneğin:
C:\settings.txt
şeklinde tam yol verebileceğiniz gibi,
settings.txt
şeklinde yalnızca dosya adını da yazabilirsiniz. Bu durumda dosya uygulamanın çalıştığı klasöre oluşturulur.
İkinci parametre ise dosyaya yazdırılacak string dizisidir.
Örnek Uygulama
Aşağıdaki örnekte iki farklı ListBox içerisindeki veriler iki ayrı metin dosyasına kaydedilmektedir.
private void btnSave_Click(object sender, EventArgs e)
{
string[] siteList = new string[listBox1.Items.Count];
string[] emailList = new string[listBox2.Items.Count];
listBox1.Items.CopyTo(siteList, 0);
listBox2.Items.CopyTo(emailList, 0);
System.IO.File.WriteAllLines("sites.txt", siteList);
System.IO.File.WriteAllLines("emails.txt", emailList);
}
Yukarıdaki kod çalıştırıldığında:
listBox1içerisindeki tüm veriler sites.txt dosyasına,listBox2içerisindeki tüm veriler ise emails.txt dosyasına
satır satır kaydedilecektir.
Bu yöntem, koleksiyon içerisindeki verileri dosyaya aktarmanın oldukça pratik ve okunabilir bir yoludur. Özellikle ayar dosyaları, e-posta listeleri veya benzeri metin tabanlı verileri saklamak istediğiniz durumlarda rahatlıkla kullanılabilir.
📝 Arşiv Notu
Bu yazı ilk olarak 2009 yılında hazırlanmıştır. Anlatılan yöntem günümüzde de kullanılabilir olsa da, daha yeni .NET sürümlerinde aynı işlemi gerçekleştirmek için farklı koleksiyon yapıları ve LINQ gibi modern yaklaşımlar da tercih edilebilir.