فایل مسطح
فایل های پایگاه داده دارای ساختار مشخصی هستند. روابط بین داده ها/ رکوردها و فایل های مختلف به روشنی در پایگاه داده تعریف می شود. برخلاف فايل های پايگاه داده، فایل مسطح (flat) ساختاری ندارد. داده در فايل به سادگی بدون ارتباط با داده های ديگر درون فايل يا فايل های ديگر ذخيره می شود. ممکن است تصور بشود که فایل های رابطه ای به دليل داشتن ساختار معين مناسب تر هستند اما حالت هایی وجود دارد که بهتر است داده در فایل های مسطح ذخيره شود تا پایگاه داده های رابطه ای پیچیده (مانند نوشتن log یا event یا exception ).
نکته. فایل هائی که در notepad می سازید فایل مسطح هستند.
جريان ها و فايل
++C کليه عمليات ورودی و خروجی و فايل را به صورت جريانی از بایت ها انجام می دهد. یک جریان (stream) یک دنباله از بایت ها است که هر بایت نشان دهنده یک کاراکتر است. جریان ورودی بایت هایی را از دستگاه ورودی، معمولا صفحه کلید یا یک فایل روی دیسک دریافت می کند. جريان خروجی بايت هائی را به صفحه نمايش، چاپگر يا فايل می فرستد.
برنامه بايد ارتباطی بين جريان و يک فايل معين روی ديسک برقرار کند. به عبارت ديگر يک جريان مربوط به فايل بايد قبل از استفاده باز شود. بعد از باز کردن فايل می توان اطلاعات را از فايل خواند يا درون فايل نوشت. هر فايل باز شده يک اشاره گر فايل دارد که بر اساس تعداد بايت هائی که از ابتدای فايل خوانده يا نوشته شده است موقعيت درون فايل را مشخص می کند. دسترسی به فايل باعث می شود اين اشاره گر بهنگام شود.
دو نوع دسترسی به فايل وجود دارد: ترتيبی و تصادفی. در دسترسی ترتيبی (sequential access) داده ها از فايل به ترتيب از ابتدا تا انتها خوانده می شوند. فايل با دسترسی مستقيم يا تصادفی (random access) اجازه می دهد اشاره گر فايل به هر نقطه مورد نظر در فايل پرش کند.
يک جريان فايل می تواند در دو مد متن (text) يا باينری (binary) باز شود. يک فايل متن شامل مجموعه ای از خطوط است. هر خط شامل مجموعه ای از کاراکترهاست که به کاراکتر انتهای خط (newline) ختم می شود (کاراکترهای با کد اسکی 10 و 13). ماکزيمم طول هر خط 255 کاراکتر است.
نکته. بخاطر داشته باشيد هر خط يک رشته منتهی به کاراکتر NULL نيست بلکه به کاراکتر انتهای خط ختم می شود.
فایل های مسطح متنی نوعی فایل ترتیبی هستند. ++C با این فایل ها به صورت دنباله ای از بایت ها برخورد می کند، فایل های ترتیبی ساختار اضافی ندارند هرساختار اضافی باید توسط برنامه تحمیل شود. راهی برای گردش در فایل های ترتيبی وجود ندارد، فايل هميشه بايد از ابتدا شروع شود.
فايل باينری داده ها را به همان فرمتی که در حافظه اصلی نمايش داده می شوند روی ديسک ذخيره می کند. بنابراين مانند فايل های متن اعداد به کاراکتر تبديل نمی شوند. اگر فايل باينری در يک اديتور متن باز شود اعداد به صورت کاراکترهای نامفهوم نمايش داده می شوند. فايل های باينری از هيچ نشانه ای برای جدا کردن خطوط داده ای استفاده نمی کنند.