انتهت في المقالات السابقة قصّة العتاد: قطعٌ تحسب، وقطعٌ تتذكّر، وأخرى تستقبل منك وتردّ عليك. لكنّ هذا العتاد كلّه صامتٌ لا يعرف ماذا يفعل بالبيانات التي تعطيه. من أين يبدأ التنظيم؟ الجواب من أصغر وحدةٍ تتعامل معها كلّ يومٍ دون أن تفكّر فيها: الملفّ. صورتك وأغنيتك ومستندك وحتّى البرنامج الذي تفتحه، كلّها ملفّات. فما هو الملفّ حقًّا؟
في هذا المقال تفتح الملفّ وترى ما بداخله: كيف يخزّن الحاسوب كلّ شيءٍ بوصفه سلسلةً من البايتات، ولماذا الامتداد الذي تراه (.jpg و.pdf) ليس هو ما يحدّد نوع الملفّ فعلًا، وكيف يعرف نظامك حقيقة الملفّ من أوّل بايتاته، والفرق بين الملفّ النصّيّ والثنائيّ، وما البيانات الوصفيّة التي تصاحب كلّ ملفّ. الهدف أن تتوقّف عن رؤية الملفّ أيقونةً، وتبدأ برؤيته حقيقةً.
ما الملفّ في جوهره؟
الملفّ في أبسط تعريفٍ سلسلةٌ من البايتات لها اسم، محفوظةٌ على وسيط تخزينٍ كالقرص الصلب أو مشغّل الحالة الصلبة. لا أكثر ولا أقلّ. تذكّر ما شرحتُه لك في مقال النظام الثنائيّ: كلّ شيءٍ في الحاسوب أصفارٌ وآحاد، تتجمّع في مجموعاتٍ من ثمانية اسمها البايت. الملفّ هو ببساطة عددٌ من هذه البايتات، مصفوفةً واحدةً تلو الأخرى، أعطاها النظام اسمًا لتجدها.
هذه الحقيقة البسيطة مدهشةٌ حين تستوعبها: لا فرق جوهريًّا بين صورةٍ وأغنيةٍ ومستند. كلّها سلاسل بايتاتٍ محفوظة. الفرق الوحيد هو ترتيب هذه البايتات ومعناها. صورةٌ بحجم مليون بايتٍ وأغنيةٌ بالحجم نفسه تشغلان المساحة ذاتها على قرصك، لكنّ البايتات في الأولى تمثّل ألوان نقاطٍ في شبكة، وفي الثانية تمثّل ارتفاع الموجة الصوتيّة لحظةً بلحظة. المادّة واحدة، والمعنى مختلف.
لهذا أقول إنّ الملفّ لا يحمل معناه في نفسه. البايتات وحدها صامتة: الرقم 72 قد يكون حرف H في ملفٍّ نصّيّ، أو درجة لونٍ في صورة، أو نغمةً في صوت. من يعطي البايتات معناها هو البرنامج الذي يقرؤها. المستند يحتاج معالج نصوصٍ يفهم ترتيبه، والصورة تحتاج عارض صورٍ يعرف كيف يفكّ ألوانها. الملفّ مادّةٌ خام، والبرنامج هو الذي يقرؤها على وجهها الصحيح.
الاسم والامتداد: نصف الحقيقة
لكلّ ملفٍّ اسمٌ ينتهي غالبًا بنقطةٍ وحروفٍ قليلة، هي الامتداد (Extension): .jpg للصور، و.mp3 للصوت، و.pdf للمستندات، و.docx لوثائق ورد. الفكرة الشائعة أنّ الامتداد يحدّد نوع الملفّ. وهذه نصف الحقيقة فقط، وربّما أخطر نصفٍ يصدّقه الناس. الامتداد ليس جزءًا من محتوى الملفّ أصلًا، بل هو مجرّد جزءٍ من اسمه.
الامتداد في حقيقته تلميحٌ لا حكم. هو إشارةٌ يقرؤها نظام التشغيل ليقرّر أيّ برنامجٍ يفتح به الملفّ حين تنقر عليه نقرتين: يرى .mp3 فيشغّل مشغّل الموسيقى، ويرى .pdf فيفتح قارئ المستندات.[1] لكنّه لا يغيّر بايتات الملفّ ولا يعرف حقيقتها. لو غيّرت الامتداد وحده، فالبايتات في الداخل تبقى كما هي تمامًا، لم يتبدّل منها شيء.
جرّب هذا بنفسك لتفهم الفكرة: خذ صورةً اسمها photo.jpg وأعد تسميتها إلى photo.txt. سيظنّ النظام أنّها ملفٌّ نصّيّ ويحاول فتحها بمحرّر النصوص، فترى رموزًا غريبةً لا معنى لها. هل تحوّلت الصورة إلى نصّ؟ أبدًا. بايتاتها لم تتغيّر، لكنّ البرنامج الخطأ قرأها. أعد الامتداد إلى .jpg فتظهر الصورة سليمةً كما كانت. الامتداد مجرّد ملصقٍ على العلبة، لا العلبة نفسها.
الرقم السحريّ: حقيقة الملفّ
إن لم يكن الامتداد هو الحقيقة، فأين تكمن حقيقة الملفّ؟ الجواب داخله، في أوّل بايتاته. معظم صيغ الملفّات تبدأ بتوقيعٍ ثابتٍ اسمه الرقم السحريّ (Magic Number): بضعة بايتاتٍ في البداية تعلن نوع الملفّ بوضوح. ملفّ PNG يبدأ دائمًا ببايتاتٍ محدّدةٍ تليها الحروف PNG، وملفّ PDF يبدأ بالرموز %PDF، وملفّات المضغوط ZIP تبدأ بالحرفين PK نسبةً لمخترعها فيل كاتز.[3]
هذا التوقيع هو ما تقرؤه البرامج الجادّة لتعرف نوع الملفّ الحقيقيّ، لا الامتداد. أدوات كثيرةٌ في أنظمة لينكس وماك تفحص أوّل بايتاتٍ من الملفّ وتخبرك بنوعه ولو كان امتداده كاذبًا أو غائبًا. لهذا لو أرسل لك أحدهم ملفًّا خبيثًا سمّاه صورة.jpg وهو في الحقيقة برنامجٌ تنفيذيّ، فإنّ نظامًا أمينًا يكشف الخداع من توقيعه الداخليّ، لا من الاسم الذي اختاره المهاجم.
ولهذا فائدةٌ عمليّةٌ تصادفها كثيرًا: حين تُصاب ملفّاتك بامتداداتٍ خاطئةٍ أو تُفقَد، تستطيع أدوات الاستعادة أن تجدها بمسح القرص بحثًا عن هذه التواقيع، فتتعرّف على الصور والمستندات من بصماتها الأولى دون الحاجة لأسمائها. الاسم قد يضيع، لكنّ الملفّ يبقى يحمل هويّته في أوّله. هذه فكرةٌ ستعود إليك حين يأتي دور نظام الملفّات في المقال القادم.
نصّيّ أم ثنائيّ؟
تنقسم الملفّات في أصلها إلى نوعين كبيرين. الملفّ النصّيّ (Text File) بايتاته كلّها حروفٌ يمكن قراءتها: كلّ بايتٍ يمثّل حرفًا حسب جدول الترميز الذي شرحتُه لك في مقال ترميز البيانات. لو فتحته بأيّ محرّر نصوصٍ رأيت محتواه مفهومًا. أمثلته ملفّات .txt وصفحات HTML وشيفرات البرمجة، وكلّها في جوهرها نصٌّ صرف.
أمّا الملفّ الثنائيّ (Binary File) فبايتاته ليست حروفًا، بل أرقامٌ لها معنًى خاصٌّ لا يفهمه إلّا البرنامج المخصّص. الصور والأصوات والفيديو والبرامج التنفيذيّة كلّها ملفّاتٌ ثنائيّة. لو فتحت صورةً بمحرّر نصوصٍ رأيت خليطًا عشوائيًّا من الرموز، لأنّ المحرّر يحاول قراءة أرقام الألوان كأنّها حروف. الفرق ليس في المادّة، فكلاهما بايتات، بل في هل تُقرأ هذه البايتات كحروفٍ أم كأرقامٍ ذات معنًى آخر.
ولهذا التقسيم أثرٌ عمليّ. الملفّات النصّيّة تنقلها بين أنظمة التشغيل المختلفة بأمانٍ نسبيّ، وتقرؤها بعد عقودٍ لأنّها لا تعتمد على برنامجٍ بعينه. والملفّات الثنائيّة أكفأ في المساحة وأسرع في المعالجة، لكنّها مرتبطةٌ بصيغتها: إن اندثر البرنامج الذي يفهمها صار فتحها متاعبًا. لهذا تُحفَظ الأرشيفات المهمّة بصيغٍ نصّيّةٍ مفتوحةٍ كلّما أمكن، ضمانًا لبقائها مقروءةً في المستقبل.
بنية الملفّ من الداخل
الملفّ الثنائيّ ليس كتلةً عشوائيّة، بل له بنيةٌ منظّمة. معظم الصيغ تقسّم الملفّ قسمين: ترويسةٌ (Header) في البداية، ثمّ البيانات. الترويسة تحمل معلوماتٍ عن الملفّ نفسه: نوعه، وإصدار الصيغة، وأبعاد الصورة إن كان صورة، ومعدّل العيّنات إن كان صوتًا، وكيفيّة تنظيم البيانات بعده. هي كصفحة الفهرس في كتاب: تخبر البرنامج بما ينتظره قبل أن يقرأ المحتوى.
بعد الترويسة تأتي البيانات الفعليّة: بكسلات الصورة، أو عيّنات الصوت، أو نصّ المستند وتنسيقه. حين يفتح البرنامج الملفّ، يقرأ الترويسة أوّلًا ليعرف كيف يفهم ما بعدها، ثمّ يفكّ البيانات على هذا الأساس. لو تلفت الترويسة، عجز البرنامج عن قراءة الملفّ ولو كانت بياناته سليمةً كلّها، لأنّه فقد الدليل الذي يقرأ به. لهذا يكون تلف أوّل بايتاتٍ في ملفٍّ أخطر من تلف وسطه أحيانًا.
وبعض الصيغ أذكى: تقسّم الملفّ إلى كتلٍ مستقلّة، كلّ كتلةٍ تحمل نوعها وطولها. هكذا يستطيع البرنامج تخطّي ما لا يفهمه والاكتفاء بما يفهمه، فتبقى الصيغة قابلةً للتطوير دون كسر البرامج القديمة. صيغة PNG مثالٌ على هذا التصميم المتين: تضيف ميزاتٍ جديدةً في كتلٍ جديدة، والبرامج القديمة تتجاهلها بسلامٍ وتعرض الصورة على أيّ حال.
البيانات الوصفيّة: ملفٌّ عن الملفّ
إلى جانب محتوى الملفّ، يحفظ النظام عنه معلوماتٍ تصفه اسمها البيانات الوصفيّة (Metadata): اسمه، وحجمه بالبايت، وتاريخ إنشائه وآخر تعديلٍ عليه، وصلاحيّات من يقدر على قراءته أو تغييره. هذه المعلومات لا تُخزَّن داخل الملفّ عادةً، بل يحفظها نظام الملفّات في سجلّه المنفصل. حين ترى تفاصيل ملفٍّ في مستكشف جهازك، فأنت تقرأ بياناته الوصفيّة لا محتواه.
وبعض الملفّات تحمل بياناتٍ وصفيّةً داخليّةً أيضًا. الصورة الملتقطة بهاتفٍ حديثٍ تخزّن في ترويستها طرازَ الكاميرا، ولحظة التقاطها، وأحيانًا مكانها الجغرافيّ بالإحداثيّات. ملفّ الأغنية يحمل اسم المطرب والألبوم وصورة الغلاف. هذه بياناتٌ وصفيّةٌ مدمجةٌ في الملفّ نفسه، وقد تكشف عنك أكثر ممّا تظنّ، فانتبه لها قبل أن تشارك صورةً على الإنترنت تحمل مكان بيتك.
الصيغ: مفتوحةٌ ومغلقة
صيغة الملفّ (File Format) هي القاعدة التي تحدّد كيف تُرتَّب البايتات ليُفهَم الملفّ. وتنقسم الصيغ قسمين مهمّين. الصيغة المفتوحة صيغةٌ منشورةٌ يعرف الجميع قاعدتها، فيقدر أيّ مبرمجٍ على صنع برنامجٍ يقرؤها ويكتبها، مثل PNG وPDF وHTML. أمّا الصيغة المغلقة فتملكها شركةٌ ولا تنشر تفاصيلها كاملةً، فتبقى ملفّاتك رهينةً ببرنامجها.
هذا الفرق ليس تقنيًّا فقط، بل يمسّ ملكيّتك لبياناتك. حين تحفظ سنوات عملك بصيغةٍ مغلقةٍ تحتكرها شركة، فأنت معلّقٌ ببقاء تلك الشركة وبرنامجها. وحين تحفظها بصيغةٍ مفتوحة، تضمن أنّ أيّ برنامجٍ اليوم أو غدًا يقدر على فتحها. لهذا تفرض كثيرٌ من الحكومات والمؤسّسات الصيغ المفتوحة في وثائقها الرسميّة، حرصًا على بقائها مقروءةً بعد عقود.
وكثيرٌ من الصيغ الحديثة مضغوطة: تخزّن البيانات بحجمٍ أصغر من أصلها لتوفّر المساحة، كما شرحتُ لك في مقال الترميز. صيغة JPEG تضغط الصور، وMP3 تضغط الصوت، وملفّات ZIP تضغط أيّ ملفّاتٍ معًا في حزمةٍ واحدة. بعض الضغط يفقد جزءًا من الجودة مقابل حجمٍ أصغر، وبعضه يحفظ كلّ بايتٍ بأمانةٍ تامّة. اختيار الصيغة إذن موازنةٌ بين الحجم والجودة والبقاء.
كيف يعرف الإنترنت نوع الملفّ؟
على الويب لا يكفي الامتداد أيضًا، فجاء نظامٌ آخر لتمييز الملفّات اسمه نوع الوسائط (MIME Type). حين يرسل خادمٌ ملفًّا إلى متصفّحك، يرفق معه سطرًا يعلن نوعه: image/png لصورةٍ من هذا النوع، وtext/html لصفحةٍ، وapplication/pdf لمستند. المتصفّح يقرأ هذا الإعلان ليقرّر كيف يعرض الملفّ: أيعرضه صورةً، أم يفتحه صفحةً، أم ينزّله.[2]
هذه الأنواع منظّمةٌ ومسجّلةٌ رسميًّا لدى هيئةٍ عالميّةٍ تشرف على الإنترنت، حتّى يتّفق العالم كلّه على معناها. النظام نفسه هو الذي يميّز مرفقات البريد ونوع الملفّات التي ترفعها إلى المواقع. لاحظ الفكرة المتكرّرة: الحاسوب لا يثق بالاسم وحده، بل يريد إعلانًا صريحًا بالنوع، إمّا في الملفّ نفسه بالرقم السحريّ، أو مصاحبًا له بنوع الوسائط.
أسماء الملفّات: قواعدها الخفيّة
حتّى اسم الملفّ له قواعد قد لا تنتبه لها. الأنظمة الحديثة تسمح بأسماءٍ بالعربيّة وأيّ لغةٍ لأنّها تخزّن الاسم بترميز يونيكود الذي يسع حروف العالم كلّها. لكن تبقى رموزٌ محظورةٌ في الأسماء، كالشرطة المائلة التي يحجزها النظام للفصل بين المجلّدات، وعلامة الاستفهام والنجمة في بعض الأنظمة. لهذا تفشل أحيانًا في تسمية ملفٍّ برمزٍ معيّنٍ دون أن تعرف السبب.
وثمّة فرقٌ يوقع كثيرين في الحيرة: بعض الأنظمة تفرّق بين الحروف الكبيرة والصغيرة في الأسماء، فترى File.txt وfile.txt ملفّين مختلفين، وأخرى تعدّهما ملفًّا واحدًا. لينكس يفرّق، وويندوز وماك في وضعهما الافتراضيّ لا يفرّقان. هذا الفرق يسبّب مشاكل حقيقيّةً حين تنقل مشروعًا من نظامٍ إلى آخر، فيختفي ملفٌّ أو يتصادم اسمان كانا يتعايشان. تفصيلٌ صغيرٌ في الاسم، وأثرٌ كبيرٌ في العمل.
المسار: عنوان الملفّ
لا يكفي اسم الملفّ ليجده النظام، فقد يتكرّر الاسم نفسه في أماكن كثيرة. لهذا لكلّ ملفٍّ عنوانٌ كاملٌ اسمه المسار (Path): سلسلة المجلّدات التي تقود إليه من الجذر حتّى اسمه، مفصولةً بشرطةٍ مائلة. مسارٌ مثل C:UsersAliصورعطلة.jpg يقول بوضوح: في القرص C، داخل مجلّد المستخدمين، ثمّ مجلّد علي، ثمّ صور، يوجد ملفٌّ اسمه عطلة. المسار عنوانٌ فريدٌ لا يشير إلّا لملفٍّ واحد.
وللمسار نوعان تصادفهما كثيرًا. المسار المطلق يبدأ من الجذر ويصف الطريق كاملًا، فيصحّ من أيّ مكان. والمسار النسبيّ يصف الطريق انطلاقًا من مكانك الحاليّ، فهو أقصر لكنّه يتغيّر معناه بتغيّر موضعك. فهم هذا الفرق يفتح لك بابًا لفهم كيف تشير البرامج والمواقع إلى ملفّاتها، ولماذا تنكسر الروابط أحيانًا حين تنقل مجلّدًا من مكانٍ إلى آخر فتضيع المسارات النسبيّة.
ملفٌّ داخل ملفّ
بعض ما تظنّه ملفًّا واحدًا هو في الحقيقة حاويةٌ تضمّ ملفّاتٍ كثيرة. ملفّ docx من وورد، لو غيّرت امتداده إلى zip وفتحته، وجدته حزمةً مضغوطةً تحوي نصّك في ملفّ، وصورك في مجلّد، وتنسيقك في ملفٍّ آخر. الصيغ الحديثة كثيرًا ما تبنى هكذا: صيغة حاويةٍ معروفةٍ تضمّ داخلها عدّة ملفّاتٍ منظّمة، بدل صيغةٍ واحدةٍ معقّدة.
هذا التصميم أنيقٌ وعمليّ. يستفيد من الضغط الجاهز، ويسهّل على البرامج قراءة أجزاء المستند كلٌّ على حدة، ويجعل الصيغة مفتوحةً للفحص. ملفّات التطبيقات على أندرويد، وحزم برامج جافا، وكتب EPUB الإلكترونيّة، كلّها في جوهرها ملفّاتٌ مضغوطةٌ بامتداداتٍ مختلفة. حين تعرف هذا، تفهم أنّ حدود الملفّ الواحد أوسع ممّا تبدو، وأنّ ما تراه أيقونةً واحدةً قد يكون أرشيفًا كاملًا منظّمًا.
سلامة الملفّ: هل وصل كاملًا؟
حين تنزّل ملفًّا كبيرًا، كيف تتأكّد أنّه وصل سليمًا لم ينقص منه بايت؟ الحلّ رقمٌ اسمه البصمة أو الاختزال (Checksum أو Hash): تمرّر الملفّ على معادلةٍ رياضيّةٍ تلخّصه في سلسلةٍ قصيرةٍ من الرموز. أيّ تغيّرٍ في بايتٍ واحدٍ يقلب هذه البصمة تمامًا. تنشر المواقع الجادّة بصمة ملفّاتها، فتحسبها بعد التنزيل وتقارن: إن تطابقتا فالملفّ سليم، وإن اختلفتا فقد تلف أو عُبِث به.
الفكرة نفسها تحمي البيانات في مواضع كثيرة لا تراها. أنظمة التخزين الحديثة تحفظ بصمة كلّ كتلةٍ لتكشف تلفها المبكّر، وبرامج تحميل البرامج تتحقّق من بصمة ما نزّلته قبل تثبيته حمايةً من العبث. رقمٌ صغيرٌ يحرس ملفًّا ضخمًا، ويكشف أدقّ تغيّرٍ فيه. هذه إحدى أذكى الأفكار في عالم البيانات: ألّا تثق بأنّ الملفّ سليمٌ لمجرّد وصوله، بل تتحقّق ببصمةٍ لا تكذب.
ماذا يحدث حين تحذف ملفًّا؟
حين تحذف ملفًّا وتفرغ سلّة المهملات، يظنّ معظم الناس أنّ بايتاته مُحيت من القرص. الحقيقة غير ذلك في العادة: النظام يكتفي بشطب اسمه من سجلّه ووسم مساحته أنّها متاحةٌ لملفٍّ جديد، لكنّ البايتات القديمة تبقى مكانها حتّى يُكتَب فوقها شيءٌ آخر. لهذا تنجح برامج الاستعادة في إحياء ملفٍّ حذفته، ما لم تُملَأ مساحته ببياناتٍ جديدة بعد الحذف.
لهذه الحقيقة وجهان. وجهٌ مطمئنٌ إن حذفت ملفًّا مهمًّا بالخطأ، فقد تسترجعه إن أسرعت. ووجهٌ مقلقٌ إن بعت جهازًا قديمًا ظانًّا أنّ حذف ملفّاتك كافٍ، فقد يستعيدها المشتري. لهذا يوجد «المحو الآمن»: أدواتٌ تكتب فوق المساحة بياناتٍ عشوائيّةً عدّة مرّاتٍ حتّى تصير الاستعادة مستحيلة. الفرق بين حذف الاسم ومحو البايتات فرقٌ جوهريٌّ يهمّك حين يتعلّق الأمر بخصوصيّتك.
الملفّات التي لا تراها
على الهاتف، أخفت أنظمة التشغيل الحديثة الملفّات عنك عمدًا. لم تعد تتصفّح مجلّداتٍ كما في الحاسوب، بل ترى صورك في تطبيق الصور وأغانيك في تطبيق الموسيقى، والملفّات نفسها مخبّأةٌ خلف الكواليس. هذا تبسيطٌ مقصودٌ يريح المستخدم العاديّ من إدارة الملفّات، لكنّه يخفي الحقيقة: كلّ ما تراه ما يزال ملفّاتٍ محفوظةً في مكانٍ ما، وإن حجبها التطبيق عن ناظريك.
وفهمك لحقيقة الملفّ يبقى نافعًا حتّى مع هذا الإخفاء. حين تعرف أنّ صورتك ملفٌّ له حجمٌ وصيغةٌ وبياناتٌ وصفيّة، تفهم لماذا تشغل مساحةً، ولماذا تفقد جودتها إن أعدت ضغطها مرارًا، ولماذا قد تحمل مكان التقاطها. الأيقونة الجميلة على شاشتك ليست إلّا واجهةً لسلسلة بايتاتٍ محفوظة، ومن يفهم ما تحتها يتحكّم في جهازه لا يُتحكَّم به.
وثمّة ملفّاتٌ مخفيّةٌ عمدًا لسببٍ آخر: ملفّات الإعدادات التي تحتاجها البرامج ولا يعنيك أن تراها بين ملفّاتك. في أنظمة لينكس وماك يكفي أن يبدأ اسم الملفّ بنقطةٍ ليصير مخفيًّا، وفي ويندوز خاصّيّةٌ تُضبَط عليه. النظام يخفيها لا ليمنعك، بل ليريح نظرك من فوضى ملفّاتٍ تقنيّةٍ لا تعدّلها يدويًّا. تستطيع دائمًا إظهارها بخيارٍ في المستكشف حين تحتاج، لكن لا تعبث بها إن لم تكن تعرف وظيفتها، فبعضها يحفظ إعدادات نظامك كلّه.
وهناك الملفّات المؤقّتة التي تنشئها البرامج أثناء عملها ثمّ تحذفها. حين تحرّر مستندًا ضخمًا، يحفظ البرنامج نسخًا مؤقّتةً تحميك من فقدان عملك إن تعطّل الجهاز فجأةً. وحين تشاهد فيديو على الإنترنت، يخزّنه المتصفّح ملفًّا مؤقّتًا ليعرضه بسلاسة. هذه الملفّات تتراكم أحيانًا وتلتهم مساحةً كبيرة، ولهذا تنفع أدوات تنظيف القرص التي تمسح ما لم يعد لازمًا منها. وحين ترى مساحة قرصك تنقص بلا سببٍ ظاهر، فغالبًا هذه الملفّات المؤقّتة هي المتّهم الأوّل، لا ملفّاتك التي تراها.
ومسألةٌ أخيرةٌ تصادفها: ماذا لو حاول برنامجان الكتابة في ملفٍّ واحدٍ معًا؟ لتجنّب الفوضى، تقفل الأنظمة الملفّ المفتوح للتعديل، فتمنع غيرها من تغييره في اللحظة نفسها. لهذا تظهر لك أحيانًا رسالة «الملفّ مفتوحٌ في برنامجٍ آخر» حين تحاول حذفه أو تعديله. ليست هذه عرقلةً، بل حمايةٌ من تضارب كتابتين تفسدان الملفّ معًا، فينتظر أحدهما حتّى يفرغ الآخر.
جرّبه بنفسك
فعّل في مستكشف الملفّات خيار إظهار امتدادات الملفّات إن كان مخفيًّا، فكثيرٌ من الأنظمة تخفيها افتراضيًّا. سترى فجأةً الامتداد الحقيقيّ لكلّ ملفّ، وهي عادةٌ أمنيّةٌ مفيدة: ملفٌّ يبدو صورةً باسم صورة.jpg.exe يكشف نفسه فورًا حين ترى امتداده الكامل. جرّب أيضًا فتح صورةٍ صغيرةٍ بمحرّر نصوصٍ ولاحظ أوّل أسطرها: قد تلمح فيها الحروف التي تعلن نوعها، رقمها السحريّ.
ثمّ انقر بزرّ الفأرة الأيمن على ملفٍّ واختر خصائصه أو معلوماته، واقرأ بياناته الوصفيّة: حجمه الدقيق بالبايت، وتاريخ إنشائه وتعديله. افتح صورةً من كاميرتك وابحث في تفاصيلها عن طراز الكاميرا ولحظة الالتقاط، وربّما موقعها. هذه التفاصيل تعرّفك على وجهٍ للملفّ لم تكن تراه، وتجعلك أكثر وعيًا بما تشاركه حين ترسل ملفًّا إلى غيرك.
من البايت إلى الترتيب
عرفتَ أنّ الملفّ سلسلة بايتاتٍ لها اسم، وأنّ الامتداد تلميحٌ لا حكم، وأنّ الحقيقة في الرقم السحريّ داخل الملفّ، وأنّ لكلّ ملفٍّ بنيةً وبياناتٍ وصفيّةً وصيغةً مفتوحةً أو مغلقة. صرت ترى تحت الأيقونة، وتفهم لماذا لا يكفي تغيير الامتداد لتغيير الملفّ.
لكن يبقى سؤالٌ لم يُجَب عنه: إن كان الملفّ سلسلة بايتاتٍ على القرص، فكيف يجدها النظام بين ملايين الملفّات؟ كيف يعرف أين يبدأ ملفّك وأين ينتهي، وكيف ينظّمها في مجلّداتٍ تتصفّحها؟ من يمسك دفتر الحسابات هذا؟ هنا يأتي دور نظام الملفّات، الطبقة التي تحوّل قرصًا خامًّا إلى مكتبةٍ منظّمة. وهو موضوع المقال القادم.
المصادر
- ويكيبيديا، «ملحق اسم الملفّ» (الامتداد جزءٌ من الاسم يستعمله النظام لتحديد البرنامج الفاتح، لا لتغيير المحتوى). ↩
- MDN Web Docs، «MIME types (media types)» (كيف يعلن الخادم نوع الملفّ للمتصفّح عبر نوع الوسائط المسجّل رسميًّا). ↩
- ويكيبيديا، «List of file signatures» (قائمة التواقيع/الأرقام السحريّة التي تبدأ بها الصيغ الشائعة كـPNG وPDF وZIP). ↩