如何将值保存为.txt文件,然后再恢复?

时间:2014-05-20 23:17:16

标签: vb.net winforms variables save text-files

如何从保存的.txt文件中恢复数字数据? WinForms VB.NET。

要保存/恢复的数据示例如下:

1.62,1.34,1.50,0.34

等等我希望能够将每个数字调暗为小数以供进一步使用。

我将在已知位置的用户计算机上保存.txt文件,并且(如果尚未删除)想要恢复我保存在那里的数字数据。我应该使用哪种布局来保存它以便以后轻松恢复数据?我应该如何恢复它?

我知道My.Settings为此提供了更简单的功能,但它在可靠性方面似乎非常受欢迎(实际上是保存并返回最佳的正确值),我想要一个可靠的解决方案。 / p>

1 个答案:

答案 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下的正确类型。否则,将重新创建整个列表。 Classeslists of classeslists 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))