تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التعامل مع الملفات والمجلدات
#1
السلام عليكم إخواني الأعزاء ورحمة الله وبركاته
سوف أقدم البعض لأنني لا أدرك الكل حول التعامل مع الملفات والمجلدات من خلال برنامج VB.NET، وأسأل الله عز وجل أن يوفقني لتقديم كل ما أعرف عن هذا الموضوع مع مراعاة البساطة والسهولة في تقديم الأفكار حول هذا الموضوع.

الدرس الأول :
إنشاء ملف أو مجلد وفقا لمسار نحن نحدده في نظام التشغيل :

في البداية لا بد من استدعاء المكتبة الخاصة بالملفات والمجلدات للتعامل معها وهي :
PHP كود :
Imports System.IO 

ثانيا سوف نعتمد الـ Class Directory من مكتبة IO للتعامل مع المجلدات، و الـ Class File للتعامل مع الملفات.

- التطبيق :
قم بإنشاء مشروع جديد وأدرج في النموذج الأول زر أمر من مربع الأدوات ثم أضف الكود التالي :
الطريقة 1 :
PHP كود :
File.Create(Path As String
سوف نستخدم هنا الأداة Create لإنشاء الملف ثم نضع بعد ذلك مسار إنشاء الملف (Path As String)
PHP كود :
File.Create("D:\Test.txt"

ملاحظة : لقد وضعنا المسار أو السواقة والملف بين علاماتي التنصيص لأن نوع الـ Path كما تشاهد في تركيبة جملة إنشاء ملف من نوع String.

الطريقة رقم 2 :
في الطريقة الأولى لقد وضعنا المسار أو Path بشكل محدد، ولكن ماذا لو أراد المستخم أن ينشئ الملف في المسار الذي يرغبه أو يحدده هو؟
قم بإدراج ComboBox من مربع الأدوات ثم ضع التسمية البرمجية للـ ComboBox "cmbPath"

ولكن كيف سنضيف أحرف السواقات إلى Combobox؟
هل نضيفها يدويا أم تلقائيا؟

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

إضافة أحرف السواقات إلى مربع التحرير والسرد تلقائيا :
الكود :
PHP كود :
For Each _Path As String In Directory.GetLogicalDrives
            Me
.cmbPath.Items.Add(_Path)
        
Next 
هنا استخدمنا جملة التكرار For Each واستخدمنا أيضا الأداة GetLogicalDrives لاستدعاء أحرف السواقات

ولكن لماذا استخدمنا هنا جملة التكرار؟
لأن هناك أكثر من قيمة نريد الوصول إليها، بمعنى آخر هناك أكثر من سواقة للوصول إليها، وإلا فإننا إذا استخدمنا جملة غير جملة التكرار فإنها سوف تستدعي فقط قيمة واحدة أو سواقة واحدة.

ثانيا : قم بإدراج TextBox ولتكن تسميته البرمجية txtFileName، هنا سوف نستخدم مربع النص لإضافة إسم للملف إضافة إلى المسار الذي تحدثنا عنه أعلاه.

ثم ضع الكود التالي في زر أمر :
PHP كود :
Dim _File as string
File 
txtFileName.Text_
File
.Create(cmbPath.Text "\" & _File) 

شرح الكود :
قمنا بالإعلان عن متغير _File
قيمة المتغير txtFileName وهو مربع النص الذي سوف نحدد من خلاله إسم الملف
ثم أضفنا أيضا جملة إنشاء الملف ودمجنا المسار cmbPath وإسم الملف FileName
الرد }}}}
تم الشكر بواسطة: abulayth
#2
الفرضية الثالثة :
في حال كان الملف موجود مسبقا، ماذا سنفعل إذا؟
توضيح :
لنفترض أننا أردنا إنشاء ملف بعنوان Test.txt في المسار D:\ ولكن نفس إسم الملف موجود في نفس المسار، كيف سنتجاوز هذه الفرضية بالمنطق البرمجي؟

في هذه الحال، سوف نستخدم الأداة Exist مع Class File
وسيكون الكود على الشكل التالي :
PHP كود :
Dim _File As string
_File 
txtFileName.Text
If File.Exists(_FileThen
File
.Delete(_File)
Else
File.Create(_File)
End IF 

شرح الكود:
في حال كان الملف موجودا قم بحذفه، وفي حال لم يكن موجودا قم بإنشاء ملف جديد.

الفرضية الرابعة :
لنفترض أننا لا نريد حذف الملف الموجود مسبقا، ونريد التعديل على تسميته، كيف سوف نعالج ذلك؟

الحل الأول : استخدام العداد Counter

الكود على الشكل التالي :
PHP كود :
Static As Integer
Dim _File 
As String
Dim _Extension 
As String
_File 
txtFileName.Text
_Extension 
".txt"
If File.Exists(cmbPath.Text "\" & _File & _Extension) Then
File.Create(cmbPath.Text & "
\" & _File & i & _Extension)
Else
File.Create(cmbPath.Text & "
\" & _File & Extension")
End IF 

الحل الثاني للفرضية الرابعة:
إضافة التاريخ والساعة إلى تسمية الملف، وبهذه الطريقة نستطيع أيضا أن نتجاوز وجود الملف مسبقا

الكود :
PHP كود :
]Dim _DateTime as string Now.ToString("MM/dd/yyyy hh:mm")
dim _File As String
_File 
txtFileName.Text
Dim _Extension 
As String
_Extension 
".txt"
File.Create(cmbPath.Text "\" & _File & _Date & _Extension) 
الرد }}}}
تم الشكر بواسطة:
#3
الدرس الثاني : حذف الملف أو الملفات
لنفترض أن الملف موجود على سطح السواقة وليس في مجلد فكيف سوف نحذف الملف؟

الكود :
PHP كود :
Dim _File As String
_Dim _Extension 
As String
_File 
txtFname.Text
_Extension 
= ."txt"
If File.Exists(cmbPath "\" & _File & _Extension) then
File.Delete(cmbPath & "
\" & _File & _Extension)
End IF 

الفرضية الثانية :
لنفترض أن الملفات موجودة في مجلد (ب) والمجلد (ب) موجود في المجلد (أ)، ونحن هنا نريد حذف الملفات الموجودة في المجلد (أ) حتى ولو كانت الملفات موجودة في المجلد (ب)، فما هو الحل؟

الكود :
PHP كود :
Sub DeleteFilesFromFolder As String(Folder As String)
IF 
Directory.Exists(FolderThen
For Each _Files As String In Directory.GetFiles(Folder)
File.Delete(_Files)
Next
For Each _Folder As String In Directory.GetDirectories(Folder)
DeleteFilesFromFolder(_Folder)
Next
End 
IF 

بعد أن قمنا بتحرير الإجراء، سوف نستدعيه من خلال زر أمر بهذا الشكل :
PHP كود :
Dim _Path As String
_Path 
"D:\TestFolder"
DeleteFilesFromFolder(_Path
لقد استخدمنا هنا الـ Class Directory لأننا نتعامل مع المجلدات
الرد }}}}
تم الشكر بواسطة: حريف برمجة , أبو عمر
#4
الدرس الرابع : نسخ الملف من مكان إلى آخر باستخدام الاداة Copy

القاعدة :
PHP كود :
File.Copy(String,String,Bolean

توضيح القاعدة :
PHP كود :
File.Copy(FileSource,FileDestination,Overwrite True  Or False

شرح القاعدة :

الاداة Copy تضم Parameter عدد ٣ وهي:
ال Parameter الاول هو من نوع string ولأنه من نوع string يجب أن نضع قيمته بين علامتي تنصيص، ويسري هذا ايضا على ال parameter الثاني، وبصورة نستطيع أن نقول أن ال parameter الاول يمثل مصدر الملف المطلوب نسخه وال parameter الثاني هو الموقع أو المكان الذي سننسخ إليه الملف.

أما ال parameter فهو من نوع boolean والغرض منه هو إذا كان نفس اسم الملف موجود في نفس المسار اعمل overwrite حتى ولو كان موجود في حال كانت قيمة ال Boolean true والعكس صحيح

للحديث تتمة ....
الرد }}}}
تم الشكر بواسطة:
#5
الطريقة الاولى : نسخ الملف من مكان إلى آخر
الكود :
PHP كود :
File.Copy("D:\OldFolder\OldFile.txt","D:\NewFolder\NewFile.txt",True

شرح الكود :
هنا قمنا بنسخ الملف oldfile الموجود في المجلد old folder إلى المجلد new folder .
الرد }}}}
تم الشكر بواسطة:
#6
جزاك الله خير ووفقك الله
لكن بالنسبة لانشاء ملف لا اضن له فائدة لان راح يستخدم الملف ولا تستطيع قرائته والتعديل عليه لين يخرج من البرنامج
والافضل استخدام file.writealltext("c:\lovevb.txt","text")
البارمتر الثاني النص بداخل الملف
وماقصرت ياغالي
الرد }}}}
تم الشكر بواسطة: khodor1985
#7
الطريقة الثانية : إسناد ال البراميتر إلى متغير

قم بإدراج مربع نص عدد ٢ / لايبل عدد ٢ / زر أمر عدد ١ إلى النموذج من مربع الأدوات

التسمية البرمجية لمربع النص الاول : txtFileSource
التسمية البرمجية لمربع النص الثاني : txtFileDestination
التسمية البرمجية لزر الامر : btnCopy

قم بتسمية ال labels
اللايبل الاول : Source
اللايبل الثاني : Destination

قم بتسمية زر الامر Copy

الكود :
في البداية قم بالاعلان عن المتغيرات التالية :
PHP كود :
Dim FileSource As String
Dim FileDestination 
As String 

ثم أضف القيم للمتغيرات لمربعي النص الاول والثاني :
PHP كود :
FileSource txtFileSource.Text
FileDestination 
txtFileDestination 

والآن سوف نستخدم أداة النسخ :
PHP كود :
File.Copy(FileSource,FileDestination,True
الرد }}}}
تم الشكر بواسطة: abulayth
#8
بارك الله فيك

كم نحن بحاجة الى مثل هذه الشروحات المميزة

يعطيك العافية
شـــايـفـــك

الرد }}}}
تم الشكر بواسطة: khodor1985
#9
شكرا لاهتمامك أخي العزيز أبو ليث، الهدف من هذه الشروحات إغناء المنتدى بالعلوم والمعارف المتنوعة.

نعم صحيح أخي العزيز أو أختي العزيزة lovevb ، سوف نتطرق إلى هذه القضايا ان شاء الله في الدروس القادمة
أشكرك على اهتمامك
الرد }}}}
تم الشكر بواسطة: LoveVb
#10
رائع جداً وموضوع مهم للغاليه 

فيه طريقه ياليت تشرحها أستاذ خضر


يوجد لدي زرار أختيار ملف وهذا الزرار ليس فيه مشكله 

والزار الأخر يوجد داخله نص برمجي يقوم بضغط البيانات ولكن قبل هذا النص يجعل المستخدم يختار مكان الحفظ 

أنا عملت مجلد داخل هاردسك خارجي أسمه (1437)

أريده لما يضغط على الزرار الثاني يفتح له مباشرةً  نافذه مجلد (1437) وهو ينشـا هناك مجلد خاص بأسم صاحب البيانات أو أي كان 

فكيف الطريقه
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] فيديو بالعربي دورة التعامل مع قواعد البيانات أحمد النجار 9 2,577 11-07-16, 10:04 AM
آخر رد: nazaky

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم