دراين بخش نشان ميدهيم كه چگونه يك فايل در سرور را باز وبسته نموده وآنرا بخوانيد.
يك روش بهتر براي باز نمودن فايل با تابعfopen() ميباشد .اين روش امكانات بيشتر نسبت به تابعreadfile() در اختيار قرار ميدهد.
ما دراينجا همان فايل متني"webdirectory.txt"براي مثالها استفاده ميكنيم .محتوي فايل مطابق زير است.
AJAX = Asynchronous JavaScript and XML CSS = Cascading Style Sheets HTML = Hyper Text Markup Language PHP = PHP Hypertext Preprocessor SQL = Structured Query Language SVG = Scalable Vector Graphics XML = EXtensible Markup Language
فرمت كلي تابعfopen() مطابق زيراست.
تابع فوق داراي دو پارامتر ميباشد .اوليه پارامتر نام فايل و دومين پارامتر نوع بازكردن فايل نشان ميدهد.در صورتيكه تابع بدليلي نتواند آنرا باز نمايد، پيغا صادر مينمايد .درصورت موفقيت مشخصه فايل در متغير $myfile قرار ميگيرد .از اين متغير براي توابع خواندن ونوشتن استفاده ميشود.
مثال ـ در مثال زير فايل متني فوق باز ومحتوي آن خوانده وسپس بسته ميشود.
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("webdictionary.txt")); fclose($myfile); ?>
نكته ـ دستورfread( ) وfclose( ) بدنبال توضيح داده ميشود. يك فايل با دستور فوق ميتواند در حالتهاي زير بازشود.
mode | شرح حالت |
---|---|
r | .بازكردن درحالت فقط خواندني .نشانه درابتداي فايل قرار ميگيرد |
w | بازنمودن فقط نوشتني .محتوي درصورت وجود فايل پاك ميشود .نشانه درابتدا .در صورت عدم وجود فايل آن ايجاد ميشود |
a | باز نمودن فايل فقط نوشتني، نشانه در انتهاي فايل قرارميگيرد .در صورت عدم وجود فايل آن ايجاد ميشود |
x | .ايجاد فايل در حالت نوشتني .در صورتيكه فايل موجود باشد پيغام خطا صادر ميشود |
r+ | .باز كردن فايل براي خواندن ونوشتن .نشانه درابتداي فايل قرار ميگيرد |
w+ | .باز كردن فايل براي خواندن ونوشتن .محتوي فايل موجود پاك ميشود، در صورت عدم وجود ايجادميشود |
a+ | .بازكردن براي خواندن ونوشتن .نشانه درانتهاي فايل قرار ميگيرد .در صورت عدم وجود ايجاد ميشود |
x+ | .ايجاد فايل براي خواندن ونوشتن .درصورت وجود فايل، خطا صادر ميشود |
تابعfread( ) اطلاعات را از فايل بازشده ميخواند. فرمت كلي تابع مطابق زير است.
تابع فوق داراي دو پارامتر ميباشد .پارامتر$myfile فايلي است كه توسط دستورfopen باز شده است ومشخصه فايل در آن قرار دارد .پارامتر دوم$nbyte_read تعداد حدا كثر بايتي است كه بايد خوانده شود.
كدphp زير اطلاعات كامل فايل "webdictionary.txt"را ميخواند .
تابعfilesize( ) تعداد بايت محتوي يك فايل برگشت ميدهد.
تابع fclose( ) براي بستن فايل استفاده ميشود .بهترين نوع برنامه نويسي اينستكه تمام فايلهاي باز كه باآن كاري نداريم، بسته شود .باز بودن فايل بدون نياز، در اجرا باعث استفاده ازمنابع سرور ميشود،وكاهش بيمورد منابع است.
فرمت كلي تابع مطابق زير است.
براي بستن فايل نياز به نام باز شده در تابعfopen ميباشد، كه بايد بعنوان پارامتر تابع ذكر شود .در مثال زير روش اقدام مشخص است
<?php $myfile = fopen("webdictionary.txt", "r"); // some code to be executed.... fclose($myfile); ?>
تابعfgets( ) براي خواندن يك خط ازفايل مورد استفاده قرار ميگيرد.فرمت كلي مطابق زير است.
مثال ـ در مثال زير خط اول فايل"webdictionary.txt"خوانده شده،و در صفحه اسكريت نمايش داده ميشود.
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); echo fgets($myfile); fclose($myfile); ?>
نكته ـ بعداز خواندن فايل با تابعfgets( ) نشانه به خط بعدي منتقل ميشود.
براي كنترل انتهاي فايل از تابعfeof( ) استفاده ميشود .فرمت كلي تابع مطابق زير است.
در صورتيكه نتيجه برگشتي تابعTRUE باشد نشانه به انتهاي فايل رسيده است، درغير اينصورت نشانه در انتهاي فايل نيست .معمولا از شرط!feof() در دستورات استفاده ميشود، كه معني اينست نشانه در انتهاي فايل نيست، اگر درست باشد كار ادامه مي يابد.
مثال ـ در مثال زير فايل خط به خط خوانده ميشود تا نشانه به انتهاي فايل برسد.
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); // Output one line until end-of-file while(!feof($myfile)) { echo fgets($myfile) . "<br>"; } fclose($myfile); ?>
تابعfgetc( ) براي خواندن يك كراكتر فايل استفاده ميشد .فرمت كلي تابع مطابق زير است.
مثال ـ در مثال زير فايل"webdictionary.txt"كراكتر به كراكتر خوانده ميشود .هركراكتر كه خوانده شد،نشانه يك كراكتر جلو ميرود تا بانتهاي فايل برسد.
<?php $myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!"); // Output one character until end-of-file while(!feof($myfile)) { echo fgetc($myfile); } fclose($myfile); ?>
نكته ـ برنامه هاي مروبط به مديريت فايل بدلايل امنيت اطلاعات محدويت هائي وجود دارد كه اجازه اصلاح براي كاربر داده نمي شود.