الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أستطيع النسخ إلى CD writer?

مغلق
بدأه حمزة في 19 ديسمبر 2004 · 5 رد · 893 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم...

أقوم بعمل برنامج أرشفة معلومات, وأريد أن يقوم هذا البرنامج بنسخ محتوى مجلد معين لنفرض أنه 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
#2

أخي الكريم، تعامل مع درايف 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/

#3

هذا الرابط من موقع vbAccelerator يقدم لك الحل:

http://www.vbaccelerator.com/home/NET/Code...g_CDs/index.asp

اقتباس
الـ VB هى الأساس ... بتبرمج بيها بالاحساس

ولا سيمي كولن ولا أقواس ... وتعلمها سهل لكل الناس

راكب فيها موتور نفاث ... دي سريعه جدا وباخلاص

الـ VB هى التراث ... للذكور والايناث :D

الـ VB لغة عريقه ... حتى اسأل Anwarica

من ديوان الشاعر السي شاربي "معتز شمس"
#4

رابط ممتاز يا Undo، وفي جوابي إفترضت بأن الأخ لديه البرنامج الذي يقوم ب Burning للسي دي (لا أعتقد بأن أحدنا لا يوجد عنده هذا البرنامج إن كان عنده درايف لنسخ الإسطوانات)، إن كان إفتراضي صحيحاً فهو لن يحتاج الى مناداة ال IMAPI Wrapper الذي يتطرق لها المثال. أنا مثلاً عندي CD Creater وقمت بتجربة نسخ فايل قبل طرح إجابتي أعلاه فقام البرنامج تلقائياً بعملية ال Burning.

رابط ممتاز بالفعل، شكراً.

Learn Japanese :>>> http://www.nouben.com/

#5

السلام عليكم ورحمة الله وبركاته

اول حاجة اضافة 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) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#6

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

Learn Japanese :>>> http://www.nouben.com/

هذا الموضوع مغلق.

مواضيع مشابهة