Ikki tomonlama ketma-ketlik. BinaryFormatter
Bunday sinf meros bo'lsa, Serializable xususiyati avtomatik ravishda meros emas, deb yodda tutish lozim. Va agar biz lotin sinfini ham ketma-ket bo'lishini istasak, unda yana unga atribut qo'llaymiz:
[Serializable]
class Worker : Person
Ikkilik ketma-ketlik uchun BinaryFormatter klassi ishlatiladi:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Serialization
[Serializable]
class Person
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
Name = name;
Age = age;
class Program
static void Main(string[] args)
// seriallashtirish uchun ob'ekt
Person person = new Person("Tom", 29);
Console.WriteLine ("yaratilgan ob'ekt");
// BinaryFormatter ob'ektini yaratish
BinaryFormatter formatter = new BinaryFormatter();
// biz seriallashtirilgan ob'ektni yozib oladigan oqimni olamiz
using (FileStream fs = new FileStream("people.dat", FileMode.OpenOrCreate))
formatter.Serialize(fs, person);
Console.WriteLine ("ob'ekt SERIALIZED");
// odamlar faylidan Deserializatsiya.dat
using (FileStream fs = new FileStream("people.dat", FileMode.OpenOrCreate))
Person newPerson = (Person)formatter.Deserialize(fs);
Console.Yozma ("ob'ekt deserialized");
Console.WriteLine ($"nomi: {newPerson.Name} - - - yosh: {newPerson.Age}");
Console.ReadLine();
BinaryFormatter klassi tizim nomlari maydonida aniqlanganligi sababli.Runtime.Serialization.Formatters.Ikkilik, keyin boshida uni ulang.
Serializable xususiyati bilan e'lon qilingan oddiy odam sinfimiz bor. Buning natijasida uning ob'ektlari ketma-ketlik uchun mavjud bo'ladi.
Keyin BinaryFormatter ob'ektini yarating: BinaryFormatter formatter = yangi BinaryFormatter ();
Keyin ketma-ketlik va ketma-ketlikni amalga oshiring. Har ikkala operatsiya uchun ham ma'lumotlarni saqlash yoki o'qish uchun oqim kerak. Ushbu oqim filestream obyekti bo'lib, u bizga kerak bo'lgan shaxs ob'ektini odamlar fayliga yozadi.dat.
Bir formatter usuli bilan ketma-ketlik.Serialize (FS, person) inson obyekti haqidagi barcha ma'lumotlarni odamlar fayliga qo'shadi.dat.
Deserializatsiya vaqtida biz deserialize funktsiyasi bilan qaytarilgan ob'ektni shaxs turiga aylantirishimiz kerak: (shaxs)formatter.Deserialize(fs).
Ko'rib turganingizdek, ketma-ketlik, BinaryWriter/BinaryReader sinfining bir guruhidan foydalanib, moslamalarni ikkilik shaklda saqlash jarayonini sezilarli darajada osonlashtiradi.
Biz faqat bir shaxs ob'ektini oldi-da, lekin shunga o'xshash ob'ektlar bir qator foydalanishingiz mumkin teng tarzda, ro'yxati yoki Serializable xususiyati amal qaysi boshqa to'plam. Keling, qator misolini ko'rib chiqaylik:
Person person1 = new Person("Tom", 29);
Person person2 = new Person("Bill", 25);
// serializatsiya uchun qator
Person[] people = new Person[] { person1, person2 };
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fs = new FileStream("people.dat", FileMode.OpenOrCreate))
// odamlar butun qator serialize
formatter.Serialize(fs, people);
Console.WriteLine ("ob'ekt SERIALIZED");
// Deserializatsiya
using (FileStream fs = new FileStream("people.dat", FileMode.OpenOrCreate))
Person[] deserilizePeople = (Person[])formatter.Deserialize(fs);
foreach (Person p in deserilizePeople)
Console.WriteLine ($"nomi: {p.Name} - - - yosh: {P. Age}");
Xulosa
Men bu kurs ishini bajarish orqali Fayl tizmi bilan ishlash, undagi imkoniyatlar va xususiyatlarini o'rgandim. Fayl tizmi bilan ishlash va uning toifalari xaqida ko'plab malumotlarga ega bo'ldim. Bu kurs ishini yozish davomida shularni o’rganib chiqdim:
Fayllar bilan ishlash. Sinf File va FileInfo
FileStream. Faylni o’qish va yozish
Matin Fayllarini o’qish va yozish. StreamReader va StreamWriter
Ikkilik fayllar. BinariyWriter va BinaryReader
Ikki tomonlama ketma-ketlik. BinaryFormatter;
Bu kurs ishi menda katta tasurot va Fayl tizmi bilan ishlash haqida ko'nikma paydo bo'ldi.
Do'stlaringiz bilan baham: |