我们在开发软件的时候需要保存数据或者设置参数的时候一般都是保存在数据库或者ini文件中,但是如果我们需要将这些数据保密,或者数据比较少,不想使用数据库时该怎么做呢?我这里提供一个使用结构体保存数据的方法。
结构体处理类:ClsFie.vb
Imports System.IO
Imports System.Runtime.Serialization.Formatters.Binary
Imports System.Text.RegularExpressions
Public Class ClsFile
#Region "验证文件夹"
Public Sub CreateDirtory(ByVal tPath As String)
Dim _Fol As String = Regex.Match(tPath, "(.*?)[\\|\/][^\\/]+$").Groups(1).Value
If Not My.Computer.FileSystem.DirectoryExists(_Fol) Then
My.Computer.FileSystem.CreateDirectory(_Fol)
End If
End Sub
#End Region
#Region "保存/读取结构体"
Public Function SaveStruct(ByVal tCo As Object, ByVal tPath As String)
CreateDirtory(tPath)
Dim fs As New FileStream(tPath, FileMode.Create)
Dim formatter As New BinaryFormatter
Try
formatter.Serialize(fs, tCo)
Return True
Catch ex As Exception
MsgBox(ex.ToString)
Return False
Throw
Finally
fs.Close()
End Try
End Function
Public Function ReadStruct(ByVal tPath As String) As Object
Dim fs As New FileStream(tPath, FileMode.Open)
Try
Dim formatter As New BinaryFormatter
Return formatter.Deserialize(fs)
Return ReadStruct
Catch ex As Exception
MsgBox(ex.ToString)
Return Nothing
Throw
Finally
fs.Close()
End Try
End Function
#End Region
End Class
使用方式:
<Serializable()>‘标记为可序列化,**必须的,不然无法保存**
Structure dbSce
Public str As String '字符串
Public list() As String '数组
Public htable As Hashtable
……
End Structure
Public ClsF As New ClsFile
Public db As dbSce
'保存数据
db.str="123"
……
ClsF.SaveStruct(db, Application.StartupPath & "\db.dat")'扩展名随便取
'读取数据
db= ClsF.ReadStruct(Application.StartupPath & "\db.dat")
dim title as string = db.str
……