الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كتابة Object إلى ملف

بدأه MKSoft في 30 أبريل 2008 · 2 رد · 841 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

إخواني ..

عندي استفسارين ...

1- كيف يمكنني كتابة وقراءة بيانلت على شكل Object من و إلى ملف ؟؟؟؟

2- كيف يمكنني كتابة بيانات إلى ملف ولكن بمعرفة مكان تخزين هذه البيانات بحيث استرجعها من خلال عنوان هذا المكان , مثل Random Access File ؟

#2

السلام عليكم

كيف الحال اخوي MKSOFT

كتابة Object في ملف بسيطه جدا وهذه العملية على علمي تسمى بـ Serialization

ولكن قبل ذلك يجب إخبار الـ Compiler بأن هذا الـ Class الذي ستسسل الـ Object منه إلى ملف بأنه Serializable

عن طريق كتابة [serializable] قبل تعريفه

وعملية إسترجاع الـ Object من الملف تسمى بـ Deserialization ولكي توضح العملية دعنا نأخذ الكلاس التالي

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication8
{
	[Serializable] // To indecate that this class is SERIALIZABLE

	class MyClass
	{
		public int data;

		public MyClass(int data)
		{
			this.data = data;
		}
	}
}

ولآن سنقوم بإستخدام كل من الـ namespaces التاليه لكي نقوم بعملية سلسلة الـ Object ألا وهما

using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;

كما هو موضح في المثال التالي

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters;
using System.Runtime.Serialization.Formatters.Binary;

namespace ConsoleApplication8
{
	class Program
	{
		static void Main(string[] args)
		{
			try
			{
				MyClass serOb = new MyClass(10); // Object to be serialize

				Console.WriteLine("Data value of serOb: " + serOb.data);

				FileStream serFs = new FileStream("C:\\MyClass.txt", FileMode.Create);

				BinaryFormatter bf = new BinaryFormatter();

				Console.WriteLine("Serializing...");
				bf.Serialize(serFs, serOb); // Serializing Object serOb of MyClass

				serFs.Flush();
				serFs.Close();

				FileStream deFs = new FileStream("C:\\MyClass.txt", FileMode.Open);

				MyClass deOb; // File will be desrialized to this object

				Console.WriteLine("Deserializing...");
				deOb = (MyClass)bf.Deserialize(deFs); // Deserializing to deOb

				deFs.Flush();
				deFs.Close();

				Console.WriteLine("Data value of deOb: " + deOb.data);
			}
			catch (Exception ex)
			{
				Console.WriteLine(ex.Message);
			}
		}
	}
}

أرجو أن يكون الشرح واضح واسئل الله العلي القدير أن يوفقك في طريقك للعلم وأن ينفعنا وإياكم بهذا

أخوك Robatic

اللهم إني أعوذ بك من علم لا ينفع ومن قلب لا يخشع ومن عين لا تدمع

#3

تحياتي أخي Robotic ..

لكن وجدت من خلال بحثي , انه يجب إضافة هذا الكود لClass الذي تريد عمل له Serialization & Deserialization

public MyClass(SerializationInfo info, StreamingContext context)
		{

data = (Int)info.GetValue("data",typeof(int));

		}
		public void GetObjectData(SerializationInfo info, StreamingContext context)
		{
			info.AddValue("data", data);

		}

مواضيع مشابهة