السلام عليكم...
أقوم بعمل برنامج أرشفة معلومات, وأريد أن يقوم هذا البرنامج بنسخ محتوى مجلد معين لنفرض أنه C:\Data إلى CD-R. هل يوجد كود يتعامل مع ال CD Writer في ال VB.NET وإذا لم يكن متوفر فلا مشكلة إذا كان سي شارب أو VB 6.0
ولكم الشكر...
السلام عليكم...
أقوم بعمل برنامج أرشفة معلومات, وأريد أن يقوم هذا البرنامج بنسخ محتوى مجلد معين لنفرض أنه C:\Data إلى CD-R. هل يوجد كود يتعامل مع ال CD Writer في ال VB.NET وإذا لم يكن متوفر فلا مشكلة إذا كان سي شارب أو VB 6.0
ولكم الشكر...
اقتباسHow to get experience without a job, and how to get a job without experience
أخي الكريم، تعامل مع درايف CD Writer في جهازك وكأنك تتعامل مع Hard Drive آخر في نفس الكمبيوتر، المبدأ نفسه.
إن أردت أن تعمل برنامج بما تفضلت به فيجب عليك أن تدرس ال NameSpace المسماة System.IO (تحتوي الكلاس DirectoryInfo ،Directory، Path,File,FileInfo ...الخ).
يجب أولاً أن تقوم بعمل فولدر في درايف ال CD Writer يطابق إسمه إسم الفولدر الذي تريد نسخه، وبعد ذلك تقوم بنسخ كل فايل في الفولدر الأصل الى الفولدر الذي عملته في درايف السي دي.... وكل هذه الأمور توفرها الكلاسات الموجودة في ال NameSpace التي ذكرتها أعلاه.
ويجب عليك ملاحظة نقطة هامة وهي: ربما يكون الفولدر الذي تريد نسخ محتوياته يوجد داخله فولدرات أخرى، وهنا يجب أن تقوم بالأمر نفسه بالنسبة لها (أي تعمل فولدر في درايف السي دي يطابق إسمه الفولدر الفرعي)....
وحتى أعطيك بداية لما يجب أن تقوم به، هذا كود قصير يبين لك كيف نستطيع أن نحصل على أسماء الفولدرات الفرعية لفولدر ما (أفترض بأن إسمه ("C:\HMS")..
Dim Dir As DirectoryInfo = New DirectoryInfo("C:\HMS")
Dim di As DirectoryInfo
Dim Arr(0) As String
Dim x As Integer = 0
For Each di In Dir.GetDirectories
ReDim Arr(x)
Nextوحتى تعرف أسماء الفايلات في فولدر معين، نقوم بالتالي:
Dir.GetFiles()
وتكون النتيجة مصفوفة بالأسماء
أما كيف تعمل فولدر، في درايف السي دي، فالأمر بسيط (افترض بأن درايف السي دي عندك هو E):
Directory.CreateDirectory("E:\" & "\HMS")وفي النهاية يجب عليك أن تقوم بنسخ الفايلات بالصورة التالي(أفترض بأن الفايل موجود في الدرايف D وأريد نسخة الى درايف السي دي، وأفترض بأنه فايل نصي وإسمه S):
File.Copy("D:\s.txt", "E:\s.txt")ملاحظة: كتبت الأكواد أعلاه ولم أجربها فعلياً، أرجو أن لايكون فيها أخطاء.
هذه هي الطريقة التي أعرفها، وقد يكون هناك طرق أخرى أسهل (في هذه الحالة أنا متأكد بأن الزملاء الأعضاء الآخرين سيقومون بتوجيهنا).
Learn Japanese :>>> http://www.nouben.com/
هذا الرابط من موقع vbAccelerator يقدم لك الحل:
http://www.vbaccelerator.com/home/NET/Code...g_CDs/index.asp
من ديوان الشاعر السي شاربي "معتز شمس"اقتباسالـ VB هى الأساس ... بتبرمج بيها بالاحساسولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس
راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص
الـ VB هى التراث ... للذكور والايناث :D
الـ VB لغة عريقه ... حتى اسأل Anwarica
رابط ممتاز يا Undo، وفي جوابي إفترضت بأن الأخ لديه البرنامج الذي يقوم ب Burning للسي دي (لا أعتقد بأن أحدنا لا يوجد عنده هذا البرنامج إن كان عنده درايف لنسخ الإسطوانات)، إن كان إفتراضي صحيحاً فهو لن يحتاج الى مناداة ال IMAPI Wrapper الذي يتطرق لها المثال. أنا مثلاً عندي CD Creater وقمت بتجربة نسخ فايل قبل طرح إجابتي أعلاه فقام البرنامج تلقائياً بعملية ال Burning.
رابط ممتاز بالفعل، شكراً.
Learn Japanese :>>> http://www.nouben.com/
السلام عليكم ورحمة الله وبركاته
اول حاجة اضافة NameSpace
Imports System.IO
انشاء مجلد
Directory.CreateDirectory("c:\MyFolder")حذف مجلد
Directory.Delete("c:\MyFolder")نقل مجلد
Directory.Move("c:\MyFolder1", "c:\MyFolder2")وطريقة اخرى
Private Sub RecursiveDirectoryCopy(ByVal sourceDir As String, ByVal destDir As String, ByVal fRecursive As Boolean, ByVal overWrite As Boolean) Dim sDir As String Dim dDirInfo As IO.DirectoryInfo Dim sDirInfo As IO.DirectoryInfo Dim sFile As String Dim sFileInfo As IO.FileInfo Dim dFileInfo As IO.FileInfo If Not sourceDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then sourceDir &= System.IO.Path.DirectorySeparatorChar End If If Not destDir.EndsWith(System.IO.Path.DirectorySeparatorChar.ToString()) Then destDir &= System.IO.Path.DirectorySeparatorChar End If dDirInfo = New System.IO.DirectoryInfo(destDir) If dDirInfo.Exists = False Then dDirInfo.Create() dDirInfo = Nothing If fRecursive Then For Each sDir In System.IO.Directory.GetDirectories(sourceDir) sDirInfo = New System.IO.DirectoryInfo(sDir) dDirInfo = New System.IO.DirectoryInfo(destDir & sDirInfo.Name) If dDirInfo.Exists = False Then dDirInfo.Create() RecursiveDirectoryCopy(sDirInfo.FullName, dDirInfo.FullName, fRecursive, overWrite) sDirInfo = Nothing dDirInfo = Nothing Next End If For Each sFile In System.IO.Directory.GetFiles(sourceDir) sFileInfo = New System.IO.FileInfo(sFile) dFileInfo = New System.IO.FileInfo(Replace(sFile, sourceDir, destDir)) If dFileInfo.Exists = False Then sFileInfo.CopyTo(dFileInfo.FullName, overWrite) Else If sFileInfo.Length <> dFileInfo.Length AndAlso overWrite Then sFileInfo.CopyTo(dFileInfo.FullName, overWrite) ElseIf sFileInfo.Length <> dFileInfo.Length AndAlso Not overWrite Then Debug.WriteLine(sFileInfo.FullName & " Not copied.") End If End If sFileInfo = Nothing dFileInfo = Nothing Next End Sub
والتشغيل
'نسخْ تكرارياً مَع كِتابَة إذا يَجِدُ.
'RecursiveDirectoryCopy("C:\Data", "D:\Data", True, True)
'إنسخْ تكرارياً بدون كِتابَة
' RecursiveDirectoryCopy("C:\Data", "D:\Data", True, False)
' يَنْسخُ هذا الدليلِ فقط. إكتبْ إذا يَجِدُ.
' RecursiveDirectoryCopy("C:\Data", "D:\Data", False, True)
' يَنْسخُ هذا الدليلِ فقط بدون كِتابَة.
' RecursiveDirectoryCopy("C:\Data", "D:\Data", False, False){وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

لقد لفت الزميل Undo الى قضية هامة مشكوراً وهي أن السيدي الموجود في الدرايف يجب أن يكون مهيئاً (أي يجب أن يكون ال Format هو فورمات Drag and Drop للسي دي إن كانCD-R، او فورمات عادي لسي دي CD-RW، وإلا سيحصل المستخدم على Exception عند محاولة النسخ، والبرنامج المشهور Roxio Easy CD Creater يقوم بعمل مثل هذا الفورمات، لا أعلم عن البرامج الأخرى).
Learn Japanese :>>> http://www.nouben.com/
هذا الموضوع مغلق.