در این قسمت نحوه باز کردن، خواندن و بستن یک فایل در سرور را به شما آموزش خواهیم داد.

تابع fopen برای باز کردن فایل

یک روش خوب برای باز کردن فایل ها با عملکرد fopen  است. این تابع نسبت به تابع readfile ، امکانات و انتخاب های بیشتری به شما می دهد.

ما در طول این درس از فایل متنی “webdictionary.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 در ادامه توضیح داده شده است.

فایل ممکن است در یکی از حالت های زیر باز شود:

حالت توصیف
r باز کردن فایل بصورت فقط خواندنی . نشانگر فایل در ابتدای فایل قرار می گیرد.
w باز کردن فایل بصورت فقط خواندنی . محتوای قبلی فایل پاک می شود و اگر فایل وجود نداشت، ایجاد می شود.نشانگر فایل در ابتدای فایل قرار می گیرد.
a باز کردن فایل برای فقط نوشتن. داده های موجود در فایل حفظ شده و نشانگر موقعیت به انتهای فایل منتقل می شود. اگر فایل موجود نبود ساخته می شود.
x ایجاد فایل جدید برای فقط نوشتن . اگر فایل از قبل وجود داشته باشد، اجرا نشده و خطا برمی گرداند
r+ بازکردن فایل بصورت خواندنی/نوشتنی. نشانگر فایل در ابتدای فایل قرا می گیرد.
w+ بازکردن فایل برای خواندن.نوشتن. محتوای فایل موجود را پاک می کند و اگر فایل وجود نداشت، فایل جدیدی ایجاد می کند. نشانگر موقعیت در شروع فایل قرار می گیرد.
a+ باز کردن فایل بصورت خواندنی/نوشتنی. محتوای فایل حفظ می شود. نشانگر در ایتدای فایل قرار می گیرد. اگرفایل موجود نبود ساخته می شود.
x+ ایجاد فایل برای خواندن/نوشتن. اگر فایل موجود بود خظا برمیگرداند.

خواندن از فایل با تابع fread

تابع fread می تواند از یک فایل باز داده ها را بخواند.

اولین پارامتر تابع fread، حاوی نام فایل است و دومین پارامتر حداکثر تعداد بایت ها برای خواندن را تعیین می کند.

قطعه کد php زیر کل محتوای فایل webdictionary.txt را می خواند :

 

fread($myfile,filesize("webdictionary.txt"));

تابع fclose برای بستن فایل

تابع fcloseبرای بستن یک فایل باز استفاده می شود.

بعد از اینکه کار با فایل ها به پایان رسید، خوب است فایل های باز بسته شوند. یک فایل باز در حال استفاده از منابع سرور است، پس وقتی با آن کاری نداریم باید بسته شود تا منابع آزاد شود.

تابع fclose به متغیر نماینده فایل نیاز دارد تا آنرا ببندد.

<?php
$myfile = fopen("webdictionary.txt", "r");
// some code to be executed....
fclose($myfile);
?>

تابع fgets برای خواندن سطرها

تابع fgets برای خواند یک سطر متن از فایل استفاده می شود.

در مثال زیر یک سطر از فایل webdictionary.txt  خوانده شده است.

<?php
$myfile = fopen("webdictionary.txt", "r") or die("Unable to open file!");
echo fgets($myfile);
fclose($myfile);
?>

توجه: بعد از تماس با تابع fgets، اشاره گر فایل به خط بعدی منتقل شده است.

تابع feof برای تشخیص انتهای فایل

تابع feof بعد از خواندن از فایل بررسی می کند که به نشانگر فایل به انتهای فایل رسیده است یا خیر؟

تابع feof () برای خواندن داده ها از یک فایل با طول نامعلوم مفید است.

مثال زیر خط فایل “webdictionary.txt” را به صورت خطی می خواند، تا زمانی که پایان فایل رسیده باشد:

<?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 برای خوان کاراکتر

تابع 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);
?>

نکته : بعد از خواندن هر کاراکتر، نشانگر فایل به مکان بعدی منتقل می شود.