تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
الملفات المؤقتة
#1
هناك حالات قد يحتاج المبرمج فيها أن يحتفظ بمعلومة أو متغير في ملف مؤقت
هذا الملف يتم قراءة البيانات منه في مرحلة معينة أثناء تنفيذ البرنامج ثم بعد ذلك يتم التخلص من الملف أو من الممكن حذف الملف قبل اغلاق البرنامج
هذه الفكرة مفيدة خاصة عندما يكون هناك حاجة للإحتفاظ ببعض البيانات أثناء التنفيذ بحيث نضمن أن لا يقوم GC Class بالتخلص منها
الفكرة من الممكن تنفيذها باستخدام بعض الأكواد الموجودة في فضاء الأسماء System.IO
خطوات تنفيذ الفكرة سهلة و بسيطة وهي كالأتي:

1- تحدد نوع البيانات المراد حفظها يشكل مؤقت و من الأفضل أن تكون علي صورة مصفوفة بايت
2- تبني فهرس بأي إسم علي فهرس المشروع أو في أي مكان تراه مناسبا لك
3- تقوم ببناء ملف يأي إسم و امتداد مناسب لك
4- تخفظ البيانات في الملف
5- تقرأ البيانات من الملف حين تحتاجها
6- تخذف البيانات من الملف خين لا يكون هناك حاجة لها

الكلاس التالي يمكن الاستفادة منه في تنفيذ الفكرة
و الأمر متروكا لكم في التعديل علي الكلاس بحيث تضيفوا للكلاس دوالا إضافية أو طرق إضافية
ألكلاس قد يكون مكتوبا بشكل صعب قليلا
عموما يمكنكم كتابة الكود بالطريقة التي تريدونها خاصة أن الأكود كلها تعتمد علي فضاء الأسماء System.IO

PHP كود :
'------------------------------------------------------------------------------
'
' File Name     : FileOperations.vb
Copyright (c) : RiverNile.Net 2017 All rights reserved.
' Date          : 06/10/2017
Revision      0.0.0.0
'                                                             
'
------------------------------------------------------------------------------

Public 
NotInheritable Class FileOperations

    Public Shared Sub WriteToFile
(fileDirectory As Stringfilename As Stringext As Stringdata As Byte())
 
       Dim file As String GetFilePath(fileDirectoryfilenameext)
 
       Dim operation As Operation(Of Boolean) = New Operation(Of Boolean)(Function()
 
                                                                              Using action As New OperationAction(Sub()
 
                                                                                                                      IO.Directory.CreateDirectory(IO.Path.GetDirectoryName(file))
 
                                                                                                                      IO.File.WriteAllBytes(filedata)
 
                                                                                                                  End Sub)
 
                                                                              End Using
                                                                               
Return True
                                                                           End 
Function)
 
       operation.GetOperation()
 
   End Sub

    Public Shared 
Function ReadFromFile(fileDirectory As StringfileName As Stringext As String) As Byte()
 
       Dim file As String GetFilePath(fileDirectoryfileNameext)
 
       Dim operation As Operation(Of Byte()) = New Operation(Of Byte())(Function() IO.File.ReadAllBytes(file))
 
       Return operation.GetOperation()
 
   End Function

 
   Public Shared Function GetFilePath(fileDirectory As StringfileName As Stringext As String) As String
        Return 
New Operation(Of String)(Function() IO.Path.Combine(fileDirectoryfileName ext)).GetOperation
    End 
Function

 
   Public Shared Function IsFileExists(filedirectory As StringfileName As Stringext As String) As Boolean
        Dim file 
As String GetFilePath(filedirectoryfileNameext)
 
       Dim operation As Operation(Of Boolean) = New Operation(Of Boolean)(Function() IO.File.Exists(file))
 
       Return operation.GetOperation()
 
   End Function

 
   Public Shared Sub CreateDirectory(directoryName As String)
 
       Dim operation As Operation(Of IO.DirectoryInfo) = New Operation(Of IO.DirectoryInfo)(Function() IO.Directory.CreateDirectory(directoryName))
 
       operation.GetOperation().Create()
 
   End Sub

    Public Shared Sub DeleteFile
(fileDirectory As StringfileName As Stringext As String)
 
       Dim operation As Operation(Of String) = New Operation(Of String)(Function() GetFilePath(fileDirectoryfileNameext))
 
       IO.File.Delete(operation.GetOperation())
 
   End Sub

    Private Shared 
Function Write(action As Action) As Boolean
        Dim operation 
As Operation(Of Boolean) = New Operation(Of Boolean)(Function()
 
                                                                              action()
 
                                                                              Return True
                                                                           End 
Function)
 
       Return operation.GetOperation()
 
   End Function

#Region "Operation"

 
   Private Class Operation(Of T)

 
       Private func As Func(Of T)

 
       Public Sub New(func As Func(Of T))
 
           Me.func func
        End Sub

        Public 
Function GetOperation() As T
            Dim result 
As Nothing
            Try
                result 
Me.func()
 
           Catch ex As Exception
                result 
Nothing
            End 
Try
 
           Return result
        End 
Function

 
   End Class

 
   Private Class OperationAction
        Implements IDisposable

        Private _action 
As Action

        Public Sub 
New(action As Action)
 
           _action action
        End Sub

        Public Sub Dispose
()
 
           Dim action As Action Me._action
            Me
._action Nothing
            If action IsNot Nothing Then
                action
()
 
           End If
 
       End Sub

        Private Sub IDisposable_Dispose
() Implements IDisposable.Dispose
            Me
.Dispose()
 
       End Sub

    End 
Class

#End Region

End Class 

كيفية استخدام الكلاس
الكتابة الي ملف مؤقت
وهذا الملف يتم انشاؤه في فهرس المشروع

PHP كود :
       Dim dName As String Application.StartupPath "\River"
 
       Dim fName As String "Temp"
 
       Dim fExt As String ".dat"
 
       Dim values As Byte() = New Byte() {20304050}

 
       FileOperations.CreateDirectory(dName)
 
       If Not FileOperations.IsFileExists(dNamefNamefExtThen
            FileOperations
.WriteToFile(dNamefNamefExtvalues)
 
       End If 


القراءة من نفس الملف المؤقت


PHP كود :
       Dim result As Byte() = Nothing
        If FileOperations
.IsFileExists(dNamefNamefExtThen
            result 
FileOperations.ReadFromFile(dNamefNamefExt)
 
       End If 

حذف الملف المؤقت بعد الحصول علي البيانات منه

PHP كود :
       If result IsNot Nothing Then
            FileOperations
.DeleteFile(dNamefNamefExt)
 
       End If 
Retired
الرد }}}
تم الشكر بواسطة: sendbad100 , ابراهيم ايبو
#2
جزاك الله الف خير
وزادك من علمه وفضله

احببت ان اعطيك التقييم رقم 100  وانت تستاهل اكثر طبعا
الرد }}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ابسط كود لرفع الملفات عن طريق سيرفر FTP Basil Abdallah 2 3,954 20-11-20, 07:21 PM
آخر رد: walihn
Lightbulb [مقال] التعامل مع اختصارات الملفات Shortcuts Magic Sword 2 4,411 01-10-20, 11:36 AM
آخر رد: abomo3ath
  شرح انشاء برنامج تحويل صيغ الملفات الصوتيه CLARO 10 6,950 16-11-18, 04:41 PM
آخر رد: anassss
  تشفير الملفات التنفيذية silverlight 2 6,322 02-10-18, 08:57 AM
آخر رد: sendbad100
  التعامل مع الملفات الصوتية ........دردشة برمجية RaggiTech 8 10,365 28-11-17, 11:23 PM
آخر رد: ahmed4240
Star [VB.NET] شرح عمل امتداد خاص لبرامجك وجعل برنامجك يقرأ هذة الملفات mohammed_gamal381 22 19,122 01-06-16, 02:55 PM
آخر رد: ابراهيم كركوكي
  الكامل في VB.Net (التعامل مع الأقراص و المجلدات و الملفات) rinawi 3 4,104 25-05-13, 01:11 PM
آخر رد: shaker.soft
  مشروع ل اخد الايقونات من الملفات just.coder 6 3,216 26-03-13, 07:12 PM
آخر رد: محمود رغمان
  مراقبة نظام الملفات FileSystemWatcher RaggiTech 1 2,692 05-10-12, 01:39 AM
آخر رد: RaggiTech
  دوال معالجة الملفات RaggiTech 8 4,640 03-10-12, 02:46 PM
آخر رد: RaggiTech

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


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