如何从保存的.txt文件中恢复数字数据? WinForms VB.NET。
要保存/恢复的数据示例如下:
1.62,1.34,1.50,0.34
等等我希望能够将每个数字调暗为小数以供进一步使用。
我将在已知位置的用户计算机上保存.txt文件,并且(如果尚未删除)想要恢复我保存在那里的数字数据。我应该使用哪种布局来保存它以便以后轻松恢复数据?我应该如何恢复它?
我知道My.Settings为此提供了更简单的功能,但它在可靠性方面似乎非常受欢迎(实际上是保存并返回最佳的正确值),我想要一个可靠的解决方案。 / p>
答案 0 :(得分:2)
如果有一些值,带有几个小数的My.Settings
将正常工作。对于适量的值,您可以在List
上使用序列化来避免数据库的开销:
Friend decList As New List(Of Decimal)
' use the values from here if you like and forego individual vars
' it rather works like an array:
thisDec = decList(index)
保存和加载值非常简单快捷:
Private Sub SaveList
Using fs As New System.IO.FileStream(myFileName,
FileMode.OpenOrCreate, FileAccess.Write)
Dim bf As New BinaryFormatter
bf.Serialize(fs, decList)
End Using
End Sub
Private Sub LoadList
' ToDo: check if file exists for the first time run if a file
' of defaults is not available
Using fs As New System.IO.FileStream(myFileName,
FileMode.Open, FileAccess.Read)
Dim bf As New BinaryFormatter
decList = CType(bf.Deserialize(fs), List(Of Decimal))
End Using
End Sub
Deserializer返回一个对象,因此您需要将其强制转换为Option Strict
下的正确类型。否则,将重新创建整个列表。 Classes
,lists of classes
,lists of dictionaries of class
都可以轻松序列化。甚至许多无法序列化的东西都可以很容易地转换成可以的东西。
根据这些值的不同,您可能希望使用Dictionary。这允许您通过键(name,Enum,Int ...)引用值。字符串键或多或少用作值的名称,因此可以直接从集合中使用它们。这样可以避免打包和解包集合以进行序列化:
Friend colDec As New Dictionary(of String, Decimal)
' add a value with the key of "Foo"
colDec.Add("Foo", 3.14285714285714)
' add a var value with the key of "Bar"
colDec.Add("Bar", decX)
' reference them in the collection:
decFooBar = colDec("Foo") + colDec("Bar") ' sum
序列化是相同的,反序列化需要新类型的mod:
colDec= CType(bf.Deserialize(fs), Dictionary(of String, Decimal))