05-10-17, 12:34 PM
(آخر تعديل لهذه المشاركة : 05-10-17, 12:47 PM {2} بواسطة silverlight.)
هناك حالات قد يحتاج المبرمج فيها أن يحتفظ بمعلومة أو متغير في ملف مؤقت
هذا الملف يتم قراءة البيانات منه في مرحلة معينة أثناء تنفيذ البرنامج ثم بعد ذلك يتم التخلص من الملف أو من الممكن حذف الملف قبل اغلاق البرنامج
هذه الفكرة مفيدة خاصة عندما يكون هناك حاجة للإحتفاظ ببعض البيانات أثناء التنفيذ بحيث نضمن أن لا يقوم GC Class بالتخلص منها
الفكرة من الممكن تنفيذها باستخدام بعض الأكواد الموجودة في فضاء الأسماء System.IO
خطوات تنفيذ الفكرة سهلة و بسيطة وهي كالأتي:
1- تحدد نوع البيانات المراد حفظها يشكل مؤقت و من الأفضل أن تكون علي صورة مصفوفة بايت
2- تبني فهرس بأي إسم علي فهرس المشروع أو في أي مكان تراه مناسبا لك
3- تقوم ببناء ملف يأي إسم و امتداد مناسب لك
4- تخفظ البيانات في الملف
5- تقرأ البيانات من الملف حين تحتاجها
6- تخذف البيانات من الملف خين لا يكون هناك حاجة لها
الكلاس التالي يمكن الاستفادة منه في تنفيذ الفكرة
و الأمر متروكا لكم في التعديل علي الكلاس بحيث تضيفوا للكلاس دوالا إضافية أو طرق إضافية
ألكلاس قد يكون مكتوبا بشكل صعب قليلا
عموما يمكنكم كتابة الكود بالطريقة التي تريدونها خاصة أن الأكود كلها تعتمد علي فضاء الأسماء System.IO
كيفية استخدام الكلاس
الكتابة الي ملف مؤقت
وهذا الملف يتم انشاؤه في فهرس المشروع
القراءة من نفس الملف المؤقت
حذف الملف المؤقت بعد الحصول علي البيانات منه
هذا الملف يتم قراءة البيانات منه في مرحلة معينة أثناء تنفيذ البرنامج ثم بعد ذلك يتم التخلص من الملف أو من الممكن حذف الملف قبل اغلاق البرنامج
هذه الفكرة مفيدة خاصة عندما يكون هناك حاجة للإحتفاظ ببعض البيانات أثناء التنفيذ بحيث نضمن أن لا يقوم 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 String, filename As String, ext As String, data As Byte())
Dim file As String = GetFilePath(fileDirectory, filename, ext)
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(file, data)
End Sub)
End Using
Return True
End Function)
operation.GetOperation()
End Sub
Public Shared Function ReadFromFile(fileDirectory As String, fileName As String, ext As String) As Byte()
Dim file As String = GetFilePath(fileDirectory, fileName, ext)
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 String, fileName As String, ext As String) As String
Return New Operation(Of String)(Function() IO.Path.Combine(fileDirectory, fileName + ext)).GetOperation
End Function
Public Shared Function IsFileExists(filedirectory As String, fileName As String, ext As String) As Boolean
Dim file As String = GetFilePath(filedirectory, fileName, ext)
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 String, fileName As String, ext As String)
Dim operation As Operation(Of String) = New Operation(Of String)(Function() GetFilePath(fileDirectory, fileName, ext))
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 T = 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() {20, 30, 40, 50}
FileOperations.CreateDirectory(dName)
If Not FileOperations.IsFileExists(dName, fName, fExt) Then
FileOperations.WriteToFile(dName, fName, fExt, values)
End If
القراءة من نفس الملف المؤقت
PHP كود :
Dim result As Byte() = Nothing
If FileOperations.IsFileExists(dName, fName, fExt) Then
result = FileOperations.ReadFromFile(dName, fName, fExt)
End If
حذف الملف المؤقت بعد الحصول علي البيانات منه
PHP كود :
If result IsNot Nothing Then
FileOperations.DeleteFile(dName, fName, fExt)
End If
Retired