الدرس الثاني عشر في دورة autoit – دوال قراءة وكتابة الملفات

بسم الله الرحمن الرحيم وبه نستعين والصلاة والسلام على أشرف الخلق والمرسلين.
أما بعد فأيها الأحباب أيها الكرام أحييكم بتحية الإسلام وتحية الإسلام السلام فالسلام عليكم ورحمة الله تعالى وبركاته.
يشرفني اليوم أن أعلن لِحضراتكم بأني قد عدت إلى دورة تعلم autoit وسنتممها إلى النهاية بإذن الله
وهذا بعد توقف طويل بسبب الدراسة ومشاغل الحياة كما نعلم, لاكن وبتوفيق من الله تمكنت من العودة إلى تقديم هذه الدورة إن شاء الله ليستفيد أكبر عدد من الناس.

اليوم سنشرع من الدرس الثاني عشر في الدورة حيث نمُر على أمور بسيطة تمهيدا لما سيأتي

محتوى الدرس

في هذا الدرس سنقدم لكم دوال قراءة الملفات الرسمية وكتابتها
حيث من خلال هذه الدوال ستتمكن من فتح الملفات والكتابة عليها وقراءتها بكل سهولة ويسر
حيث سنتطرق لدالتين واحدة للقراءة والثانية للكتابة بالإضافة إلى دالة لفتح الملف ودالة لغلقه
والآن لنتوكل على الله

دوال فتح الملف وغلقه

دالة فتح الملف (fileOpen)

حيث تستخدم هذه الدالة لفتح الملفات النصية في السكربت وتجهيزها للعمل عليها سواءا قراءة أو كتابة
إسم الدالة هو
fileOpen

شكل الدالة هو :

FileOpen (“اسم الملف” [النمط = 0])

إعدادات الدالة

تحتوي هذه الدالة على إعدادين وهما :

الإعداد وصفه
إسم الملف هنا يتم كتابة اسم الملف أو مساره الكامل
النمط هنا يتم تحديد نمط الفتح حيث تقوم باستخدام واحد أو أكثر من هذه الأنماط (يمكنك استخدام أكثر من نمط بالجمع بين الأنماط كمثلا النمط1 + النمط2)

$FO_READ (0) = نمط القراءة فقط (الافتراضي)
$FO_APPEND (1) = نمط الكتابة (في آخر الملف)
$FO_OVERWRITE (2) = نمط الكتابة (حيث يحذف المحتوى القديم)
$FO_CREATEPATH (8) = انشاء مجلد التخزين إذا لم يكن موجود.
$FO_BINARY (16) = إجبار استخدام وضع Binary.
$FO_UNICODE أو $FO_UTF16_LE (32) = استخدام Unicode UTF16 Little Endian في نمط القراءة أو الكتابة.
$FO_UTF16_BE (64) = استخدام Unicode UTF16 Big Endian في القراءة أو الكتابة.
$FO_UTF8 (128) = استخدام Unicode UTF8 (مع BOM) في القراءة أو الكتابة.
$FO_UTF8_NOBOM (256) = استخدام Unicode UTF8 (بدون BOM) في القراءة أو الكتابة.
$FO_ANSI (512) = استخدام ANSI في القراءة أو الكتابة.
$FO_UTF16_LE_NOBOM (1024) = استخدام Unicode UTF16 Little Endian (بدون BOM) في القراءة أو الكتابة.
$FO_UTF16_BE_NOBOM (2048) = استخدام Unicode UTF16 Big Endian (بدون BOM) في القراءة أو الكتابة.
$FO_FULLFILE_DETECT (16384) = للفتح من أجل الكتابة بدون BOM , استخدم محتوى الملف للتعرف على إذاما كان UTF8 أو UTF16. إذا لم تستخدم هذه سيتم التحقق فقط من 64KB الأولى في الملف.

يجب أن يكن مجلد الهدف موجود إلا اذا قمت باستخدام $FO_CREATEPATH.
كما يمكنكم استخدام المتغيرات المذكورة وهذا بعد استدعاء ملف
FileConstants.au3.

وإلا يمكنكم استخدام بدل من ذالك الأرقام الموجودة بين قوسين دون استدعاء الملف

نتيجة الدالة التي ترجع بها

في حال تحققت العملية فستقوم الدالة بإرجاع القيمة الرمزية التي تسمح لك باستخدامها في الدوال الأخرى
أما في حال الفشل فالنتيجة تكون -1

مثال على الدالة

هذا مثال لقراءة ملف بترميز UTF8 مع إنشاء المجلد في حال عدم الوجود بالإضافة إلى الكتابة في آخر الملف

#include
local $h_open = FileOpen(“d:\myfile.txt”, $FO_OVERWRITE + $FO_CREATEPATH + $FO_UTF8)

دالة غلق الملف fileClose

هذه الدالة تستخدم لغلق الملف المفتوح بواسطة FileOpen
حيث إعدادها إعداد واحد وهو
الرمز الذي ترجع به دالة fileOpen
حيث شكلها
fileClose(“handle”)
إذا تم إغلاق الملف بنجاح فالنتيجة التي تعود بها هي 1 وإلا فهي 0

دوال كتابة وقراءة الملفات

هنا سأقوم باستعراض دوال كتابة وقراءة الملفات
ملاحظة :
كل الدوال التي سأذكرها يمكنكم استخدامها بدون استخدام FileOpen أو FileClose
حيث يمكنكم استخدام المسار الخاص بالملف فقط
لاكن يستحسن استخدامهم مع الدوال المذكورة لأنها تتيح لكم التحكم الشامل

نبدأ أولا مع دوال القراءة

قراءة الملف بالكامل FileRead

هذه الدالة تستخدم لقراءة الملف بالكامل
حيث شكل الدالة كما يلي
FileRead ( “filehandle/filename” [, count])
حيث في الإعداد الأول نكتب إما رمز فتح الملف الذي تحصلنا عليه من خلال دالة FileOpen
أو مسار الملف الكامل
وفي الإعداد الثاني هو اختياري أي يمكنكم تركه فارغا
حيث تحدد هنا عدد الحروف التي تريده أن يقرأها
وبتركه فارغا فأنت تخبر اللغة بقراءة الملف بالكامل

نتائج الدالة

في حال نجحت العملية فنتيجة الدالة تكون محتوى الملف
وإلا فرمز الخطأ يكون 1 في حال تعذر فتح الملف
أو -1 لأي خطأ آخر.

مثال

مثالا على هذه الدالة إليكم التالي

#include
;فتح الملف مع وضع القراءة وترميز UTF8
local $h_open = FileOpen(“d:\myfile.txt”, $FO_READ + $FO_UTF8)
;قراءة الملف باستخدام الرمز
local $s_read = FileRead($h_open)
;عرض محتوى الملف
msgBox(64, “النص المقروء”, $s_read)
;غلق الملف المفتوح
FileClose($h_open)
;الخروج من البرنامج
exit

قراءة سطر محدد من الملف FileReadLine

تستخدم هذه الدالة لقراءة سطر محدد من ملف نصي
وفكرتها نفس فكرة الدالة السابقة لاكن الإعداد الثاني بدلا من عدد الحروف نكتب رقم السطر الذي نريد قراءته
فشكل الدالة كما يلي
FileReadLine(“handle”, “line number”)
إذ الإعداد الأول هو رمز فتح الملف الناتج من دالة fileOpen أو مسار الملف الكامل
أما الإعداد الثاني فنكتب رقم السطر
فالسطر الأول رقمه 1

والثاني 2
إلخ
أما لو أحببنا قراءة السطر الأخير مثلا فيمكن استخدام الرقم -1 لفعل ذالك

نتيجة الدالة

إن هذه الدالة في حال نجحت العملية فإنها تعود بمحتوى السطر المطلوب
وفي حال فشلت فرمز الخطأ يكن 1 أو -1

مثال


#include
;فتح الملف مع وضع القراءة وترميز UTF8
local $h_open = FileOpen(“d:\myfile.txt”, $FO_READ + $FO_UTF8)
;قراءة السطر الثاني في الملف باستخدام الرمز
local $s_read = FileReadLine($h_open, 2)
;عرض محتوى السطر
msgBox(64, “النص المقروء”, $s_read)
;غلق الملف المفتوح
FileClose($h_open)
;الخروج من البرنامج
exit

هذه هي دوال قراءة الملفات الرسمية المتاحة في لغة autoit

أما الآن فنأتي للدوال الخاصة بالكتابة

دالة كتابة المحتوة fileWrite

تستخدم هذه الدالة في كتابة محتوى في ملف محدد
حيث شكل الدالة كما يلي
FileWrite ( “رمز الملف/مسار الملف”, “النص” )
حيث الإعداد الأول يمكن كتابة رمز الفتح الذي حصلنا عليه باستخدام دالة fileOpen
أو مسار الملف الكامل

أما الإعداد الثاني فنضع فيه النص الذي نريد كتابته

نتيجة الدالة

إن هذه الدالة في حال نجاح العملية فإنها ستعود لنا بالرقم 1
أما في حال الفشل فتعود بالرقم 0
ومسببات الفشل ربما تكون أن الفتح لم يتم على وضع الكتابة, أو أن الملف للقراءة فقط, أو يمكن أن تكون هناك أسباب أخرى كمثلا صلاحيات المسؤول في بعض المسارات.

مثال

إليكم فيما يلي مثال عن الدالة

#include
;فتح الملف مع وضع الكتابة والاستبدال وترميز UTF8
local $h_open = FileOpen(“d:\myfile.txt”, $FO_OVERWRITE + $FO_UTF8)
;كتابة محتوى في الملف باستخدام رمز الفتح
local $i_Write = FileWrite($h_open, “هذا مثال لكتابة محتوى معين في ملف”)
;اظهار نتيجة العملية
msgBox(64, “النتيجة”, $i_Write)
;غلق الملف المفتوح
FileClose($h_open)
;الخروج من البرنامج
exit

ملاحظة :

هناك دالة اسمها
FileWriteLine
وهذه الدالة تستخدم لكتابة محتوى في السطر الأخير في الملف
لم أرغب في التفصيل فيها لقلة أهميتها
لأن الدالة الأولى يمكن أن تستبدلها بدون مشاكل
فهذه الدالة فيها إعدادين الإعداد الأول هو لرمز الملف المفتوح أو مساره
أما الإعداد الثاني فهو للسطر الذي نريد أن نظيفه

مثال كامل على الدوال

فيما يلي سأقوم بتجميع الدوال التي تطرقنا إليها في مثال واحد لكي تسهل عليكم التجربة

#include
;فتح ملف مع وضع الكتابة وترميز utf8
local $h_open = FileOpen(“d:\myfile.txt”, $FO_OVERWRITE + $FO_UTF8)
;كتابة محتوى في ملف
FileWrite($h_open, “مرحبا هذا نص مكتوب” & @crlf & “هذا سطر آخر”)
;غلق الملف المفتوح
FileClose($h_open)

;قراءة الملف
$s_read = FileRead(“d:\myfile.txt”)
;عرض المحتوى
msgBox(64, “محتوى الملف”, $s_read)
;قراءة السطر الثاني
$s_readLine = FileReadLine(“d:\myfile.txt”, 2)
;عرض المحتوى
msgBox(64, “محتوى السطر”, $s_readLine)
;الخروج من البرنامج
exit

خاتمة

في النهاية لا تنسو أخوكم ناصر من صالح دعاءكم
ومن يملك أي استفسار أو طلب فعلى الرحب
في أي وقت
ولأي استفسار في الدرس يرجى التعليق هنا في الموضوع فقط.

تقبلو تحيات أخاكم في الله ناصر بعزيز, كما لا تنسو مشاركة الموضوع لتعم الفائدة.

عن ناصر بعزيز

شاب من الجزائر, مهتم بالأمور التقنية وشغوف بالبحث والتعلم. يشرفني التواصل معكم, وأنا في الخدمة لأي مساعدة. للتواصل معي يرجى استخدام وسائل الإتصال المتاحة أعلى الموقع.

شاهد أيضاً

الدرس العاشر في دورة autoit – دوال التحكم في النوافذ

بسم الله الرحمان الرحيم; والصلاة والسلام على أشرف الخلق والمرسلين. أما بعد فأيها الأحباب, أيها …

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *