سؤال

عندما أستخدم وظائف الملفات في PHP، أتحقق من EOF. أتساءل عما إذا كانت EOF موجودة بالفعل في ملف. عندما أقوم بإنشاء ملف نصي فارغ، يعرض 0KB. كيف يوجد EOF في ملف مع 0KB؟

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

المحلول

هناك حرف تحكم نهاية في الملفات (في حرف ASCII تعيين CTRL + Z أو 26 أو 0x1a)، ولكن لم يكن هناك حاجة فعلا لتمييز نهاية الملف منذ أن تم إصدار نظام التشغيل في الثمانينيات. جميع أجهزة التشغيل الحديثة تخزن حجم الملف كما البيانات الوصفية في بنية الدليل (التنسيق الدقيق يعتمد على نظام الملفات) ووظائف الوصول إلى الملفات عالية المستوى ستحقق من حجم الملف ليقرر متى يشير إليك، والمبرمج.

إذا كان هناك نهاية في البيانات ولديك ترجمات وضع النص قيد التشغيل (في معظم اللغات، فهذا هو نفس الإعداد الذي يتحكم في تحويلات NL <-> CRLF)، ثم قد يتوقف الوصول إلى الملفات عندما يضرب ذلك حرف eof. في الوضع الثنائي، ستظل يقرأ حتى يضغط حجم الملف.

نصائح أخرى

في نظام الملفات الحديثة، لا يوجد حرف EOF الفعلي على القرص. يتم تنفيذها في بعض وظائف قراءة الملفات عن طريق إرجاع قيمة 4 بايت بدلا من قيمة 1 بايت، ولكن معظم الوظائف لا تستخدم المفهوم.

غير موجود .. لكن حجم الملف يفعل، وهذه الطريقة التي تعرف فيها أين هو eof

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