Dosya I/O
Verileri JSON olarak kaydedip yüklersin.
Library'yi dosyaya kaydet
Bir Save(string path) metodu, _books listesini JsonSerializer.Serialize ile metne çevirir ve File.WriteAllText ile dosyaya yazar. Böylece kitaplık kapanıp açılsa bile veri kalıcı olur.
System.Text.Json ad alanından JsonSerializer ve System.IO ad alanından File sınıfı kullanılır. Serileştirme, her kitabın özelliklerini anahtar-değer çifti olarak yazar.
File sınıfı ile yazma
File.WriteAllText(path, text) tüm metni tek seferde dosyaya yazar; dosya varsa üzerine yazar, yoksa oluşturur. File.ReadAllText(path) ile de geri okursun.
Kaydetme akışı: önce Serialize ile metni üret, sonra WriteAllText ile dosyaya yaz. Geri yükleme: ReadAllText ile oku, Deserialize<List<Book>> ile nesneye çevir.
Uygulama Save metodunu ekle
Aşağıdaki Library sınıfına bir Save(string path) metodu ekle: _books listesini JsonSerializer.Serialize ile metne çevirip File.WriteAllText ile dosyaya yazsın. Main içinde bir kitap ekle, Save çağır ve "Kaydedildi" yazdır.
Örnek çözümü göster
public void Save(string path) { string text = JsonSerializer.Serialize(_books); File.WriteAllText(path, text); } yaz. Main'de lib.Save("books.txt"); Console.WriteLine("Kaydedildi");
Örnek çözüm:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.Json;
class Book
{
public string Title { get; set; }
public string Author { get; set; }
}
class Library
{
private List<Book> _books = new List<Book>();
public void Add(Book b) => _books.Add(b);
public int Count => _books.Count;
public IEnumerable<Book> FindByAuthor(string author)
{
return _books.Where(b => b.Author == author);
}
public void Save(string path)
{
string text = JsonSerializer.Serialize(_books);
File.WriteAllText(path, text);
}
}
class Program
{
static void Main()
{
var lib = new Library();
lib.Add(new Book { Title = "Suç ve Ceza", Author = "Dostoyevski" });
lib.Save("books.txt");
Console.WriteLine("Kaydedildi");
}
}
Kendini test et
-
JsonSerializer.Serialize ne yapar?
- Metni nesneye çevirir
- Dosyayı siler
- Listeyi sıralar
- Nesneyi metne çevirir
Cevabı göster
Nesneyi metne çevirir — Doğru. Serialize bir nesneyi metne çevirir.
-
Serialize çağrısını tamamla
string text = JsonSerializer.____(_books);Cevabı göster
string text = JsonSerializer.Serialize(_books); -
Metodu rolüne eşle
- Serialize
- Nesneden metne
- Deserialize
- Metinden nesneye
- WriteAllText
- Dosyaya yaz
- ReadAllText
- Dosyadan oku