سؤال

هل من الممكن تغيير محتويات ملف أثناء الكتابة إليه باستخدام FilewRiter؟
أحتاج إلى كتابة ثوابت البيانات إلى رأس الملف وإذا قمت بذلك ، فهو يكتب الملف.
ما هي التقنية التي يجب أن أستخدمها للقيام بذلك أو يجب أن أقوم بإنشاء نسخ من الملف (مع البيانات الجديدة في الأعلى) في كل ملف يكتب؟

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

المحلول

إذا كنت ترغب في الكتابة فوق بعض بايتات الملف وليس غيرها ، فيمكنك استخدام البحث والكتابة للقيام بذلك. إذا كنت ترغب في تغيير محتوى كل بايت في الملف (على سبيل المثال ، إضافة بايت واحد إلى بداية الملف) ، فأنت بحاجة إلى كتابة ملف جديد وربما إعادة تسميته بعد الانتهاء من كتابته.

فكر في إجابة السؤال "ماذا ستكون محتويات البايت في إزاحة X بعد انتهائي؟". إذا ، بالنسبة إلى مئوية كبيرة من القيم المحتملة لـ X ، فإن الإجابة هي "ليس ما كان عليه الحال" ، فأنت بحاجة إلى ملف جديد.

نصائح أخرى

بدلاً من التنافس على أنفسنا مع السؤال "ماذا ستكون محتويات البايت في إزاحة X بعد انتهائي؟" ، دعنا نغير العقلية ونسأل لماذا لا يستطيع نظام الملفات أو ربما البرنامج الثابت للقرص الثابت: أ) وفر طريقة أخرى للوصول إلى الملف [دعنا نقول ، مضمّن] ب) زيادة طول الملف بعدد البايتات المضافة في المقدمة أو في الوسط أو حتى في النهاية ج) تحرك كل بايت يبدأ من عملية التوصيل عن طريق التقسيم مواضع NewContent.length

سيكون من الأسهل وأسرع التعامل مع هذه العمليات على مستوى البرنامج الثابت على DISK أو مستوى تنفيذ نظام الملفات بدلاً من ترك هذه المهمة لمطور التطبيق. آمل أن يقدم كتاب نظام الملفات أو بائعي القرص الصلب هذه الميزة قريبًا.

التحيات ، سامبا

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