با استفاده از مکانیزم مدیریت فایل ها در php , می توانیم یک فایل را به عنوان منبع دریافت و عملیاتی بر روی آن انجام دهیم .
Php چندین تابع از پیش ساخته شده (in-built) برای کار با فایل ها به ما ارایه می دهد , بعضی از این توابع عبارتند از fopen() , file_exists() , file() , file_get_contents() و غیره … .
برای آشنایی کامل با تابع file_get_contents در php کلیک کنید
بعضی از عملیاتی که می توانیم بر روی فایل ها انجام دهیم , بصورت زیر لیست شده اند.
- باز کردن فایل
- خواندن , حذف و نوشتن داده های جدید و اضافه کردن به آن
- بستن فایل
باز کردن فایل
برای بازکردن یک فایل با مکانیزم مدیریت فایل ها در php , ما باید اسم فایل و mod یا همان حالت مورد نظر را ست کنیم . mod ها به ما دسترسی محدودی به انجام عملیات بر روی فایل می دهند .
Mod های عملیات
در مدیریت فایل ها در php , چها تا از حالت های زیر برای کار با فایل ها وجود دارد .
- {r , r+} – برای خواندن فایلی که از قبل وجود دارد (read)
- {w , w+} – تغییر کل محتوای فایل با حذف کردن محتوای قبلی (write)
- {a , a+} – افزودن (append) محتوای جدید با وجود محتوای قبلی
- {x , x+} – ساخت فایل جدید و کار کردن با آن
خواندن فایلی که از قبل وجود دارد
در php , دوتا از mod های زیر برای مدیریت فایل ها در php و خواندن فایل از قبل ساخته شده استفاده می شود .
r برای فقط خواندنی (read-only) و r+ برای خواندن و نوشتن (read-write) استفاده می شود.
با استفاده از تابع fopen() , می توانیم یک فایل را با اسم و mod مورد نظر باز کنیم . برای مثال ,
1 2 3 4 |
$filePointer = fopen("hello.txt","r"); while(!feof($filePointer)){ echo fgets($filePointer). "<br>"; } |
نکته : باید مطمین باشیم فایل از قبل وجود دارد , وگرنه با خطای warning زیر مواجه می شویم .
1 2 3 |
Warning: fopen(hello.txt) [function.fopen]: failed to open stream: No such file or directory in ... Warning: fgets() expects parameter 1 to be resource, boolean given in ... |
تغییر کل محتوای فایل
برای انجلم عملیات write , دو انتخاب برای نوع mod فایل باز شده داریم . که به صورت زیر است.
W برای فقط نوشتنی (write-only) و w+ برای خواندن و نوشتن (read-write) استفاده می شود.
با استفاده از حالت های بالا , تمام محتوای فایل پاک خواهد شد . این حالت ها کل محتوای فایل را تغییر می دهد.
برای مثال,
1 2 |
$filePointer = fopen("hello.txt","w"); fwrite( $filePointer, "NetParadis: MySQL Query\n" ); |
افزودن محتوا به فایل
در این عملیات , محتوای قبلی فایل پاک نخواهد شد . در عوض , محتوای جدید بعد از محتوای قبلی فایل اضافه می شود .
برای این نوع عملیات , این حالت ها را داریم .
a برای فقط نوشتنی (write-only) و a+ برای نوشتن و خواندن استفاده می شود .
کد این مثال از مدیریت فایلها در php نیز همانند مثال قبل خواهد بود بجز اینکه حالت آن تغییر می کند.
1 |
$filePointer = fopen("hello.txt","a"); |
نکته : در php , حالت نوشتن و افزودن فایل از قبل ساخته شده را باز می کنند , در صورتی که فایل از قبل وجود نداشته باشد , یک فایل جدید برای انجام عملیات مورد نظر می سازد.
ساخت فایل جدید
دو mod برای نوشتن در یک فایل جدید وجود دارد
x برای فقط نوشتن (write-only) و x+ برای خواندن و نوشتن (read-write) استفاده می شود . برای مثال ,
1 2 |
$filePointer = fopen("hello.txt","x"); fwrite( $filePointer, "NetParadis: FUNCTIONS\n" ); |
احتیاط : اگر فایل از قبل وحود داشته باشد , ادامه اجرای اسکریپت متوقف خواهد شد .
1 2 3 |
Warning: fopen(hello.txt) [function.fopen]: failed to open stream: File exists in ... on line ... Warning: fwrite() expects parameter 1 to be resource, boolean given in ... on line ... |
برای آشنایی با انواع خطاها در php کلیک کنید . همانطور که متوجه شدید در بسیاری مقالات توصیه می کنم حتما با انواع خطا ها در php و نوع آنها و نحوه رفع آنها به طور کامل آشنا بشید . چونکه امکان ندارد چندین خط کد بنویسید و هیچ گاه به خطا برنخورید . این آموزش به شما کمک می کند که در مرحله debugging به سرعت مشکل را پیدا کرده و آن را رفع کنید .
بستن فایل
بعد از انجام تمام عملیات بالا بر روی فایل که به عنوان مدیریت فایل ها در php یا (php file handling) شناخته می شود , نیاز داریم که با استفاده از تابع fclose() , فایل مورد نظر را ببندیم . به تابع fclose() باید $filepointer که همان تابع fopen که شامل نام و حالت فایل بود را پاس بدیم . این کار باعث آزاد شدن فضای مموری سیستم می شود و اگر برای فایل های کمی حجیم تر این کار را انجام ندهید ممکن است برای سیشن شما خطاهای مربوط به memory ارسال و در صفحه مرورگر چاپ شود و ببینید
1 |
fclose( $filePointer); |
خب امیدوارم از آموزش مدیریت فایل ها در php لذت برده باشید . کاربرد این آموزش ساخت فایل منیجر های هاستینگ , یا مدیریت فایل برای آپلودر و … کاربردهای مختلف می باشد
هر گونه مشکلی در پیاده سازی کدها داشتید ، از قسمت نظرات اقدام کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.