سؤال

لماذا لا يمكننا تسلسل الكائنات في ملف الوصول العشوائي؟ ومن ناحية أخرى، يمكننا تسلسل الأشياء في ملف وصول متتابع؟

"" C # لا توفر وسيلة للحصول على حجم كائن في وقت التشغيل. هذا يعني أنه، إذا استسلمنا الفصل، فلا يمكننا ضمان حجم سجل ثابت طول "" (من الكتاب الذي قرأته فيه).

لذلك لا يمكننا قراءة ملف الوصول العشوائي لأننا لا نعرف كل حجم كائن في الملف فكيف يمكننا أن نطلب البحث ؟؟؟؟؟؟

هل كانت مفيدة؟

المحلول

أي كائن ملحوظ مع SerializableAttribute يمكن تسلسل السمة (في معظم السيناريوهات). يتم توجيه النتيجة من التسلسل دائما إلى دفق، مما قد يكون جيدا في مجرى إخراج الملفات.

هل تسأل لماذا لا يمكن أن يكون الرسم البياني للكائن جزئيا؟ .NET التسلسل فقط [DE] تسلسل الرسوم البيانية كائن كاملة. وإلا سيكون عليك أن تتحول إلى مزايا التسلسل الأخرى، أو اكتب بنفسك.

للوصول العشوائي المباشر إلى ملف، يجب عليك فتح الملف بتدفق يدعم البحث.

تعديل:

لا يوجد في الدفق الناتج من تسلسل أي غرض عملي - يعرف تكوين التسلسل فقط ما هو موجودا هناك على أي حال ويجب أن تتغذى دائما على بداية الدفق.

لاستمرار البيانات في هياكل أخرى؛ قم بذلك في عملية من مرحلتين: أولا، استهدفت بايت التسلسل إلى دفق [IE المدعومة بالذاكرة] التي يمكنك قراءة الحجم من بعد ذلك، ثم اكتب البيانات إلى متجر الدعم الفعلي، باستخدام معرفة الحجم.

لا يمكنك التنبؤ بحجم كائن متسلسل، لأن التمثيل التسلسلي قد يختلف كثيرا عن تمثيل وقت التشغيل.

لا يزال من الممكن تحقيق السيطرة الدقيقة على حجم الإخراج، إذا كنت تستخدم أنواع بدائية فقط، وتكتب باستخدام مكاتب ثنائية - ولكن هذا ليس التسللة لكل حد ذاته.

نصائح أخرى

التسلسلات الثنائية الافتراضية في .NET تسلسل رسم بياني كائن كامل، والتي، من طبيعتها لكونها بيانيا، لا تحتوي على حجم ثابت، مما يعني أنه لن يكون لكل كائن التسلسل (سجل) بحجم ثابت، ومنع الوصول العشوائي وبعد

لتتمكن من الوصول بشكل عشوائي إلى أي سجل في ملف، اكتب تنفيذك الخاص لتسلسل صفك الثنائي، أو استخدم قاعدة بيانات. إذا كنت بحاجة إلى محرك قاعدة بيانات بسيطة ولا يقوم بتثبيته، فابحث عن نظرة SQL Server مضغوط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top