التعامل مع الملفات والمجلدات
كل مبرمج يجب أن يتعامل مع الملفات والمجلدات في بعض النقاط ، برنامجك سوف
يستخدم الملفات لكي يقوم بتخزين معلومات الإعداد للسكربت ، أو يقوم بتخزين
البيانات لقراءتها وكتابتها ، أو لكي يقوم بحفظ البيانات المؤقتة ، وكمثال
فإن أتفه برنامج عداد يحتاج إلي ملف يقوم بتخزين آخر رقم تم الوصول إليه ..
الملف : ليس عبارة عن أكثر من بايتات متسلسلة يتم تخزينها على القرص الصلب أو أي ماده تخزينية أخرى .
والمجلد : هو عبارة عن نوع محدد من الملفات يحتفظ بأسماء ملفات أخري
ومجلدات أخري ( تسمي بالمجلدات الفرعية ) ، كل ما تحتاجه لتتعامل مع
الملفات والمجلدات هو كيف يمكنك ربط سكربتك بهم ..
هذا الدرس سيأخذك إلي جولة لتعلم التعامل مع الملفات والمجلدات وفي نفس
الوقت يوفر لك مرجعية لبعض الدوال التي تساعدك في ذلك مما يجعل مهمتك أسهل
...
سيقوم هذا الدرس بتغطيه المواضيع التالية :
1 فتح وإغلاق الملف .
2 القراءة من الملف والكتابة إليه .
3 مسح وإعادة تسمية الملفات
4 استعراض وتجول في الملف .
5 فتح وإغلاق المجلدات .
6 نسح وإعادة تسميه المجلدات .
ملاحظة :
قبل أن نبدأ دعنا ننبهك أن التعامل مع الملفات يختلف من نظام تشغيل إلي
آخر ففي أنظمة اليونكس تستخدم المسارات العلامة المائلة للأمام
مثال
/home/usr/bin/data.txt
بينما في الويندوز فإن المسار يكون كالتالى
C:\usr\bin\perl
وإذا استخدمنا العلامة الأمامية في PHP للويندوز فإنه يقوم بتحويلها بشكل
تلقائي إلي علامة خلفية بينما إذا أردنا استخدام العلامة الأمامية فإننا
يجب أن نقوم بتكرار العلامة لكي يتم التعرف عليها
C:\\windows\\PHP
التعامل مع الملفات
يوفر الـPHP نوعين من الدوال المتعلقة بالملفات فهناك نوع من الدوال
يستخدم مقبض للملف (file handle) أو ما يسمونه بالمؤشر (pointer) في
العادة ، بينما بعض الدوال يستخدم قيمه حرفيه تشير إلي موضع الملف مباشره
...
مقبض الملف ليس أكثر من عدد صحيح (integer) يقوم بتعريف الملف المراد فتحه
حتي يتم إغلاقه ، إذا كان هناك أكثر من ملف مفتوح فان لكل ملف مقبضه
التعريفي الخاص به ، وبالطبع فإنه لا يتوجب عليك معرفه هذا الرقم ....
على سبيل المثال فإن الدالة fwrite() تقوم بفتح الملف لكتابة بيانات إليه وهي تستخدم مقبض لكي تقوم بالتعرف إلي الملف وفتحه ..
Fwrite ($fp,’Hello World’);
بينما الدالة file() التي تستخدم للقراءة من الملف تقوم باستخدام قيمة
نصية تقوم بالإشارة إلى مكان الملف بشكل مباشر لكي يتم التعامل معه ..
لا تصب بالرعب والخوف من هذا الكلام فأنا أعلم أنه قد يكون غامضاً عليك ..
تنفس الصعداء وجهز لنفسك كأساً من الشاي لأننا سنبدأ في الجد الآن ....
ملاحظة : ستجد أن اغلب الدوال أو معظمها أو كلها تقريبا تقوم بإرجاع
القيمة True إذا تمت بنجاح والقيمة False إذا فشلت في الحصول على هدفها ..
لنبدأ الآن مع سكربتات مبسطة للعمل مع الملفات ..
فتح واغلاق الملفات
Fopen
تستخدم هذه الدالة ثلاث عوامل هي مسار الملف (path) والوضع له ( للقراءة ،
للكتابة .....) بالاضافة إلى مسار الـInclude فيه وتقوم هذه الدالة بإرجاع
مقبض للملف ...
قد تواجهنا مشاكل أحيانا فقد يكون الملف غير منشأ أو أننا لا نملك صلاحيات
عليه ولذلك فإنه يمكننا اختبار القيمة التي ترجعها هذه الدالة فإذا كانت
القيمة صفر فهذا معناه أن الدالة فشلت في إرجاع مقبض الملف أو نوعه ، أما
إذا كانت القيمة هي واحد فهذا معناه أن الدالة قد نجحت في فتح الملف
مثال
$fp=fopen (“./data.txt”, “r”);
if (!$fp) die (“فشل في قراءه الملف تأكد من التراخيص ومن مسار الملف”);
يمكننا كتابة المثال أيضا بالشكل التالي :
If (!($fp=fopen (“./data.txt”, “r”))) die (“لا يمكن القراءة من الملف”);
لاحظ أننا قلنا سابقاً أن هناك دوال تستخدم للتعامل مع الملفات تستخدم
مقبض وهذا المقبض هو عبارة عن رقم ، في مثالنا هذا يتحدد رقم المقبض الذي
هو المتغير $fp الذي يخزن فيه مكان الملف وما إذا كان قابلاً للفتح أو لا
أو يعمل أو لا يعمل ، والنتيجة التي تتخزن في المتغير $fp هي رقم مثلما
قلنا سابقاً وهو صفر إذا كان الملف لا يعمل أو واحد إذا تم فتح الملف
بنجاح ..
الآن دعنا نناقش معاملات الدالة fopen الذي تقوم بإعطائنا رقم المقبض ..
أول معامل هو مسار الملف على القرص الصلب
لنفرض أن لديك مجلدا قمت بإنشائه في مجلد السكربتات الرئيسي لديك الذي يسمى htdocs وأسميته data
ولنفرض أن سكربتك يستخدم ملفين :
1- ملف للقراءة والكتابة يسمي data.txt .
2- وملف يقوم بعرض المدخلات والإضافة إليها اسمه script.txt .
حسنا لدينا الآن ثلاث حالات للسكربت
الحالة الأولى :
أن يكون الملفين في نفس المجلد (data) وعند ذلك يمكنك فتح الملف الذي تريد فتحه بذكر اسمه فقط من غير إضافات
$fp=fopen (“data.txt”, “r”);
الحالة الثانية:
أن يكون هناك مجلد في نفس مجلد الـdata باسم آخر ولنقل أن هذا الاسم هو gb
وفيه ملف data.txt على ذلك فإننا نكتب المسار المطلق لهذا المجلد كالتالي
:
$fp=fopen (“./gb/data.txt”, “r”);
الحالة الثالثة :
أن يكون الملف الذي تريد قراءته موجود في المجلد htdocs بينما السكربت
موجود في المجلد data الموجود داخل htdocs على ذلك نكتب المسار النسبي
كالتالي
$fp=fopen (“../data.txt”, “r”);
لاحظ النقطه التي تسبق العلامة الأمامية جيدا..
أتمني أن تكون فهمت من هذا الكلام ما هو المقصود بالمسار المطلق والمسار النسبي ..
يمكننا أيضا وضع رابط صفحة في موقع آخر ولكننا لن نستطيع الكتابة عليه بل قراءته فقط
مثال :
If (!($fp=fopen (“
http://www.swalif.net/softs/index.php”, “r”))) die (“لا يمكن القراءة من الملف”);
ينقصنا نقطه يجب أن نتكلم عنها وهي عند تحديد العامل use_include_path
العامل الثاني الذي نستخدمه للملفات هو حاله الملف
( للقراءة ، للكتابة ، للإضافة إليه) يحدد وضعية الملف حال فتحه إذا كان
للقراءة فقط أو للكتابة فقط أو للاثنين معاً أو للإضافة ، وأرتبها هنا في
جدول بسيط ..
الوصف
القيمة
تفتح الملف للقراءة فقط ويكون المؤشر في بداية الملف
r
يفتح الملف للقراءة والكتابة ويضع المؤشر في بداية الملف
r+
يفتح الملف للقراءة فقط ، أي بيانات موجودة سيتم مسحها ، إذا لم يكن الملف موجودا سيحاول PHP إنشاؤه
w
يفتح الملف للقراءة والكتابة ، أي بيانات موجودة سيتم مسحها ، إذا لم يكن الملف موجودا سيحاول PHP إنشاؤه
w+
يفتح الملف للإضافة فقط ، إذا لم يكن الملف موجودا سيحاول PHP إنشاؤه ، سيكون المؤشر في نهاية الملف
a
يفتح الملف للقراءة و للإضافة ، إذا لم يكن الملف موجودا سيحاول PHP إنشاؤه ، سيكون المؤشر في نهاية الملف
a+
يستخدم لفتح وقراءه ملفات الصور على نظام أو سيرفرات الويندوز فقط .. أما
الينوكس فالعوامل السابقه تتعامل مع ملفات الصور بشكل عادي ..
b
هناك مؤشر للملفات يحدد إذا ما كنت ستكتب من نهاية أو بداية الملف أو حتى
من وسطه أو من أي مكان بالملف ، ستعرف كيفية التحكم بهذا المؤشر بعد قليل .
العامل الثالث هو تحديد use_include_path
فإذا قمت بتحديد قيمته إلي (1) وقمت بكتابة اسم الملف مباشرة فسيبحث
الـPHP عن الملف في نفس المجلد الموجود به السكربت ثم سيقوم بالبحث عن
الملف في المجلدات التي تم تحديدها في المتغير use_include_path في ملف
php.ini
مثال :
$fp=fopen (“./data.txt”, “r”,1);
fclose
عندما تنتهي من التعامل مع الملف ، تحتاج إلى إغلاقه لكي يتم حفظ
التعديلات عليه ، إذا تم إحباط سكربتك لأي سبب أو أن السكربت انتهي عمله
فإن الـPHP يقوم بإغلاق جميع الملفات تلقائيا
تقوم الدالة fclose() بإغلاق الملف عندما تريد إغلاقه وهي تحتاج إلي معامل واحد فقط وهو مقبض الملف الذي تريد إغلاقه
مثال :
Fclose ($fp) ;
قراءه وكتابه الملفات
لقد تعرفنا الآن كيفية فتح وإغلاق الملف ، لنقم الآن بالتعرف علي كيفية قراءة و كتابة البيانات من الملف ،
Fread
تقوم هذه الدالة بقراءة واستخراج البيانات الموجودة في الملفات ووضعها
بمتغير وهي تأخذ معاملين المعامل الأول هو مقبض الملف والعدد الثاني هو
عدد الحروف المراد قراءتها ..
مثال :
$fp=fopen("data.txt","r");
$data=fread($fp,10);
وخذ باعتبارك نقطتين وهما :
1- إذا مثلاً قرأت عشر حروف من الملف وكان في الملف عشرين حرف وقمت بطلب
الدالة fread مره أخري فسيتم قراءة العشر أحرف الثانية ..
2- إذا كان في الملف أقل من عشر أحرف فسيتم قراءة الموجود .
Fwrite
تقوم هذه الدالة بالكتابة إلى الملف وتحتاج إلى عاملين وهي مقبض الملف
والقيمة المراد كتابتها إلى الملف ، فعلى افتراض أنك قد فتحت الملف
والمقبض هو $fp فإننا نكتب الكلمة PHP إلى الملف بالطريقة التالية :
Fwrite ($fp, "PHP");
وهناك معامل ثالث لهذه الدالة يحدد كم حرفا سنقوم بكتابته من القيمة الحرفية الموجودة في المعامل الثاني فلو مثلا كتبنا
Fwrite ($fp, "PHP",1);
فسوف يتم كتابه أول حرف فقط ...
قراءة وكتابة الحروف في الملفات
Fgetc
تستخدم هذه الدالة لقراءة حرف واحد من الملف في كل مرة ، وهي تستخدم معاملاً واحداً وهو مقبض الملف
وتقوم بإرجاع حرف واحد من الملف أو (False) عند الوصول إلى نهاية الملف ..
Feof
تقوم هذه الدالة بخدمتنا في هدف بسيط وشي ممتاز وهي معرفة إذا ما كنا قد
وصلنا إلى نهاية الملف عند قراءته وتقوم بإرجاع (true) عند الوصول إلى
نهاية الملف أو حصول خطأ ما ، وهي تأخذ معاملاً واحد وهو مقبض الملف .
فقد تكون مثلاً تريد أن تتأكد أن المؤشر لم يصل إلي نهاية الملف بعد
استخدامك لأحد الدوال التي تقوم بنقل المؤشر من مكان إلي آخر ، عند ذلك
ستكون هذه الدالة مفيدة لتخبرك إذا ما وصلت إلى نهاية الملف أو لا ...
تطبيق عملي :
قم بإنشاء ملف سمه file.txt واكتب فيه أكثر من سطر ثم قم بإنشاء ملف PHP
وسمه بأي اسم وضع فيه الشفرة التالية ثم اختبره ، لكي ترى عمل الدالتين
<?
$fp= fopen("file.txt","r");
While (!feof($fp))
{
$char=fgetc($fp);
echo $char;
} ?>
Fgets
إذا استخدمنا الدالة fgetc لقراءة الملفات الطويلة فإنها ستأخذ وقتاً
وعمراً حتى يتم قراءتها ، يقوم الـPHP بتوفير دالة fgets لتساعدنا في
قراءة عدد محدد من البايتات وهي تأخذ معاملين ، المعامل الأول هو مقبض
الملف والمعامل الثاني هو عدد الحروف المراد قراءتها +1 ، فإذا مثلا أردت
قراءة ملف يتكون من خمس حروف فسيكون المعامل الثاني للدالة هو الرقم 6
وتتوقف الدالة عند حدوث أحد من ثلاث حالات
الأول : هو إذا تم قراءة عدد البايتات المحدد ة
الثاني : إذا تم الوصول إلى نهاية سطر في الملف .
الثالث : إذا وصلت إلى نهاية الملف .
مثال :
$fd = fopen ("/tmp/inputfile.txt", "r");
while (!feof ($fd)) {
$buffer = fgets($fd, 4096);
echo $buffer;
}
fclose ($fd);
Fputs
تقوم بنفس وظيفة الداله fwrite وتأخذ نفس معاملاتها ونفس طريقتها ..
القراءة داخل الملفات
File
تحتاج هذه الدالة إلى معامل واحد هو مسار الملف ولا تحتاج إلي مقبض ،
وعملها هو قراءة ما بداخل الملف وتخزينه سطراً سطراً في مصفوفة حيث أن هذه
المصفوفة تقوم بأخذ كل سطر في الملف كأنه عنصر لوحده وتظل السطور سطورا
(أي أن المصفوفة تحتفظ بالمعامل للسطر الجديد (\n) بداخلها ) ، هذه الدالة
لا تحتاج إلي مقبض للملف بل تحتاج إلى مسار الملف فقط ، وهي تقوم بفتح
وقراءة وإغلاق الملف تلقائيا ...
وكغيرها من الدوال فإنها تستطيع قراءة صفحات الإنترنت الخارجية ..
مع ذلك يستحسن أن لا تقوم باستعمال هذه الدالة لقراءة الملفات الطويلة
لأنها تقوم باستخدام قدر كبير من الذاكرة المحجوزة للـ PHP وقد تستخدمها
كلها ...
مثال :
<?
$fcontents = file ('file.txt');
while (list ($line_num, $line) = each ($fcontents)) {
echo "<b>Line $line_num:</b> $line <br>\n";
}
?>
Fpassthru
تقوم هذه الدالة بقراءة محتويات الملف بداية من النقطة التي توقف منها
المؤشر الوهمي عند أي عملية قراءه أخرى ، وتقوم بالتوقف عند نهاية الملف
وتقوم بإغلاق الملف من تلقاء نفسها لذلك لا داعي لإغلاق الملف بواسطة
الدالة fclose بعد استخدامك لهذه الدالة ، وتقوم الدالة بقراءة المحتويات
وطباعتها بشكل قياسي ، وهي تحتاج إلى معامل واحد فقط وهو مقبض الملف ...
مثال :
<?
$fp=fopen("file.txt","r");
fpassthru($fp)
?>
Readfile
تقوم هذه الدالة بقراءة جميع محتويات الملف ولا تحتاج إلي مقبض بل إلى
مسار الملف فقط وتقوم بقراءة كامل محتويات الملف ثم طباعتها بشكل قياسي
وتقوم بإرجاع عدد البايتات التي تم قراءتها أو (false) عند حدوث خطأ ما
<?
Readfile ("file.txt");
?>
الوصول العشوائي إلى الملفات
أخبرناكم سابقا بأن هناك طريقة تجعلك تتحكم في التحكم بالمؤشر الوهمي
للملف والوصول إلي أي مكان في الملف أو عند أي حرف تريده ، بالدوال
السابقة كنا عندما نصل إلي حرف معين مثلاً بدالة من الدوال فإننا نقوم
بإغلاق الملف ثم نعاود فتحه كي نكمل القراءة من عند الحرف الذي تم الوصول
إليه ولكن هذه الطريقة غير عمليه نهائيا .....
يوصل لنا الـPHP بعض الدوال التي تمكننا من الوصول إلي الملف بالمكان الذي نريده ومن هذه الدوال :
Fseek
تحتاج هذه الدالة إلى عاملين ، العامل الأول هو مقبض الملف $fp والعامل
الثاني هو عبارة عن رقم صحيح يسمونه كمصطلح بالـ(offset) أي المكان الذي
سيتوقف فيه المؤشر ، سيقوم الـPHP بالتحرك في الملف إلي أن يصل إلى المكان
الذي تم تحديده .. أي أنه إذا كان في الملف سطر واحد مكون من عشره حروف
وقمنا بجعل الـoffset خمسة ، سيقوم الـPHP بالتحرك حتى يصل إلى نهاية
الحرف الخامس ...
وهناك معامل ثالث اختياري لهذه الدالة ويسمونه كمصطلح بالـ (whence ) وله إحدى ثلاث خيارات :
Seek_set ويقوم بقراءة الملف من بدايته حتى يصل إلى المكان المطلوب بالـoffset
Seek_cur يقوم بالقراءة من المكان الحالي حتى يصل إلي المكان المطلوب بالـoffset
Seek_End يقوم بالقراءة من نهاية الملف حتى يصل إلي المكان المحدد بالoffset
تعتبر هذه الدالة نادرة في عملها ( أو كما يسميها المبرمجون شاذة) بسبب
أنها تقوم بإرجاع القيمة (0) عند نجاحها والقيمة (-1) عند حصول خطأ ما ..
مثال :
قم بفتح ملف واكتب فيه ثمان حروف متتالية ثم قم بحفظه باسم file.txt ثم قم
بوضعه مع ملف PHP فيه الشفرة التالية ، ثم بعد ذلك شغل ملف الـPHP وانتظر
النتيجة :
<?
$fp = fopen("file.txt");
fseek($fp,4,SEEK_SET);
fpassthru($fp);
?>
Ftell
هذه الدالة من الدوال المفيدة فهي تقوم بإرجاع مكان الـoffset ( أو المؤشر
الوهمي) في الملف وتحتاج إلي معامل واحد وهو مقبض الملف ...
<?
$fp = fopen ("file.txt");
$p = ftell($fp);
echo $p;
?>
Rewind
تقوم بإرجاع المؤشر إلي بداية الملف ...
<?
$fp = fopen ("file.txt");
rewind($fp)
?>
جلب معلومات الملف
يوفر الـPHP دوال تساعدنا في معرفه حجم الملف وما إذا كان الملف موجوداً أم لا من هذه الدوال :
File_exists
تقوم هذه الدالة بالقيام بالتأكد ما إذا كان الملف موجوداً أم لا وهي
تحتاج على معامل واحد وهو مسار الملف ، وتقوم بإرجاع true (1) إذا كان
الملف موجوداً و false إذا كان الملف غير موجود
<?
$Th=File_exists("file.txt");
echo $Th ;
?>
Filesize
تقوم هذه الدالة بإرجاع حجم الملف بالبايتات أو false عند حصول خطأ ...
دوال الملفات المتعلقة بالوقت :
هذه الدوال تقوم بإرجاع معلومات مفيدة عن وقت التغيير الذي طرا على الملف
أو آخر مره تم قراءته وهي على حسب نظام التشغيل فإذا كان نظام السيرفير هو
يونكس أو لينوكس ستقوم الدوال بإرجاع الوقت بنظام (timestamp) وهو الوقت
مترجم إلي عدد الثواني منذ صدور يونكس ومولده على العالم ، بينما تقوم
بإرجاع وقت التعديل على نظام الويندوز مباشره ...
يقوم الـPHP بتزويدنا بدالتين لمعرفه الوقت :
Filectime وتقوم بإرجاع آخر وقت تم فيه التغيير على الملف على شكل
timestamp ويشمل هذا آخر وقت تم فيه إنشاء الملف أو الكتابة إليه أو تغيير
تراخيصه ...
Filemtime تقوم بإرجاع آخر وقت تم فيه التعديل على الملف على شكل
timestamp ويشمل هذا إنشاء الملف أو تغيير محتوياته ...
تقوم الدالة getdate بعمل مفيد وهو تحويل الوقت من timestamp إلي الوقت العادي
الملكية والتراخيص
على أنظمة تشغيل اليونكس مثل يونكس ترتبط الملفات مع مستخدم خاص أو مجموعة
من المستخدمين (group) وتحتوي على علامات وتراخيص تقوم بتوضيح من له
صلاحية على استخدامها ..
يمكننا أن نخلص التراخيص كالتالي :
1 / ممتلك الملف (owner) ، بشكل افتراضي ، وهو المستخدم الذي تم استخدام حسابه في استخدام الملف .
2 / مجموعه من المستخدمين (group) ، بشكل افتراضي ، المجموعة التي يكون ضمنها مالك الملف
3 / جميع المستخدمين (all) كل شخص له حساب على النظام .
المستخدمين والمجموعات في أنظمة اليونكس يتم تعرفهم عن طريق رقم (ID)
مثلما يتم تعريفهم عبر أسمائهم ، إذا كنت تريد معرفه معلومات شخص عن طريق
رقمه ، يمكنك استخدام هذه الدالة :
Posix_getpwind
التي ستقوم بإعطائنا مصفوفة تحتوي على المعلومات التالية
Name
اسم المستخدم الذي يدخل به في حسابه
passwd
كلمة السر المشفرة للمستخدم
uid
رقم الحساب للمستخدم
gid
رقم حساب المجموعة التي فيها المستخدم
gecos
اسم المستخدم الكامل ، رقم تلفونه ومعلومات إضافية
dir
المجلد الرئيسي للمستخدم
shell
المسار الرئيسي لحساب المستخدم
Posix_getgrgid
تقوم هذه الدالة بإرجاع مصفوفة عن معلومات المجموعة ، وهي تحتاج إلى معامل واحد فقط وهو رقم الـID للمجموعة ...
وسوف تحتوي على العناصر التالية :
اسم المجموعة
Name
رقم المجموعة
Gid
عدد أعضاء المجموعة
members
وهناك ايضا خمس دوال تساعدنا في معرفة معلومات أكثر عن الملفات وتحتاج فقط إلي مسار الملفات
Fileowner
تقوم بإرجاع رقم المعرف (ID) لمالك الملف ...
Filegroup
تقوم بإرجاع رقم المعرف (ID) لرقم المجموعة التي يعتبر مالك الملف ضمنهم ..
Filetype
تقوم بإرجاع رقم نوع الملف وقد تعود بإحدى هذه القيم (file ، dir ، char ،fifo ، link ،block ) والذي يهمنا منهم هو file وdir ...
Is_dir
وتقوم بإرجاع True إذا كانت قيمه المسار هو مجلد ..
Is_file
وتقوم بإرجاع True إذا كانت قيمه المسار هو ملف ..
الحصول على اسم الملف من وسط مسار الملف ..
Basename()
مثال :
<?
$path = "/home/httpd/html/index.php3";
$file = basename ($path);
echo '$file <br>';
$file = basename ($path,".php3");
echo '$file <br>';
?>
هذه الدالة مفيدة جداً للحصول على الملف من وسط مسار مجلد ..
نسخ ، اعادة تسمية وحذف الملفات
تسمح لك الـPHP بنسخ ، وإعادة تسمية ، وحذف والدوال التي تستخدم لتنفيذ هذه العمليات هي
Copy ()
تقوم بأخذ قيمتين حرفتين وتشير إلي مصدر الملف الرئيسي الذي يوجد فيه الملف والمصدر الهدف الذي سيتم نسخ الـPHP إليه ...
<?
if (!copy($file, $file.'.bak')) {
print ("failed to copy $file...<br>\n");
}
?>
Rename
نستطيع الآن استخدام هذه الدالة لإعادة تسمية الملف وهي تحتاج إلي قيمتين
حرفتين وهي المصدر الملف أو مكانه واسمه الرئيسي ثم الاسم الجديد الذي
تريد إعادة التسمية به ..
مثال :
<?
Rename ('file.txt','newfile.txt');
?>
Unlink()
تحتاج إلي قيمه حرفيه واحده وهي مسار الملف الذي تريد حذفه
<?
unlink ('file.txt');
?>
العمل مع المجلدات
مثلما تعاملنا مع الملفات في الـPHP فإننا نتعامل مع المجلدات ، فهناك
دوال للمجلدات تتطلب مقبض المجلد ، وهناك دوال تحتاج فقط إلي القيمة
الحرفية فقط وبدلاً من الإطالة دعنا نقوم بالدخول في الموضوع مباشرة
Opendir
تقوم بفتح المجلد وإعطائنا مقبض المجلد
Closedir()
تقوم بإغلاق المجلد المفتوح وتحتاج فقط إلى مقبض المجلد ...
Readdir
تقوم بقراءة المدخل الحالي للمجلد ...
Rewindir
تقوم بإرجاع المدخل من الصفر ..
Chdir
للانتقال إلي مجلد آخر ، وتتطلب المسار للمجلد الذي تريد الانتقال إليه ..
Rmdir
تقوم بمسح مجلد ، ولكن يجب أن يكون المجلد خاليا من أي ملفات أو مجلدات ، وتتطلب مسار المجلد الذي تريد مسحه ..
Mkdir
تقوم بإنشاء مجلد جديد وتتطلب أن يكون هذا المجلد غير موجود مسبقاً وتحتاج
إلي قيمتين وهما اسم المجلد الجديد مع مساره ، والترخيص المطلوب له ..
Dirname
تقوم بإعطائنا اسم المجلد الحالي الذي فيه الملف ، وتحتاج إلي مسار الملف ..
تطبيق عملي :
أنشئ مجلد اسمه tmp في مجلد الـhtdocs وضع فيه ملفات ، ثم أنشئ ملف اسمه test.php في مجلد الـhtdocs واكتب الشفرة التالية ثم شغله :
<?php
if ($dir = @opendir("/tmp")) {
while($file = readdir($dir)) {
echo "$file\n";
}
closedir($dir);
}
?>
Dir()
عبارة عن كائن يحتوي على ثلاث وظائف .. ونقوم بإعطائه مسار المجلد الذي
نريده أن يتعامل معه ثم بعد ذلك نقوم بوضع قيمته في متغير يقوم بوراثة
صفاته
خصائص الكائن :
handle
تقوم بإعطائك مقبض المجلد ..
Path
تقوم بإعطائك المسار للمجلد ..
Read
تقوم بإعطائنا المجلدات اعتماداً على المؤشر الحالي للمجلد ..
Rewind
تقوم بإرجاع مؤشر المجلد من الصفر ..تقريباً نفس عمليه rewinddir ..
Closedir
تقوم بإغلاق المجلد ..
بهذا يكون انتهي الدرس
قد تكون بعض النقاط غير واضحة ، في الواقع لن تحتاج إلي كل هذه الأمور في تعاملك مع الملفات