Vb.net 如何将值保存为.txt文件,然后在以后恢复?

Vb.net 如何将值保存为.txt文件,然后在以后恢复?,vb.net,winforms,variables,save,text-files,Vb.net,Winforms,Variables,Save,Text Files,如何从保存的.txt文件中恢复数值数据?WinForms VB.NET 要保存/恢复的数据示例如下: 1.62,1.34,1.50,0.34 等等。我希望能够将每个数字变暗为十进制,以便进一步使用 我将在用户计算机上的已知位置保存一个.txt文件,并且(如果它没有被删除)希望恢复保存在其中的数字数据。我应该首先使用哪种布局保存数据,以便以后轻松恢复数据?我该如何恢复它 我知道我的.Settings为此提供了简单得多的功能,但在可靠性方面(实际上保存并返回最佳正确值)对我来说似乎是一帆风顺的,我需

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

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

1.62,1.34,1.50,0.34

等等。我希望能够将每个数字变暗为十进制,以便进一步使用

我将在用户计算机上的已知位置保存一个.txt文件,并且(如果它没有被删除)希望恢复保存在其中的数字数据。我应该首先使用哪种布局保存数据,以便以后轻松恢复数据?我该如何恢复它


我知道我的.Settings为此提供了简单得多的功能,但在可靠性方面(实际上保存并返回最佳正确值)对我来说似乎是一帆风顺的,我需要一个可靠的解决方案。

如果有几个值,
我的.Settings
只有几个小数就可以了。对于数量适中的值,可以在
列表上使用序列化来避免数据库开销:

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
反序列化程序返回一个对象,因此需要将其强制转换为
选项Strict
下的正确类型。否则,将重新创建整个列表<代码>类
类列表
类词典列表
都可以轻松序列化。甚至许多无法序列化的东西也可以很容易地转换为可以序列化的东西

根据这些值的不同,您可能需要使用字典。这允许您按键(名称、枚举、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))

在准确性方面?你这是什么意思?@minitech accurity意味着它几乎不会正确存储结果。我的设置应该可以正常工作。如果您想在会话之间保存某些内容,还可以使用注册表,或者您可以将数据以各种格式保存在文本文件中—csv、xml、您自己想象的格式。目前,您的问题过于宽泛,无法给出有意义的答案-我们需要更多的上下文。如何将
My.Settings
将其保存为小数点比将其写入文本文件更不准确?可靠的解决方案是数据库…我在哪里插入值?我应该以哪种格式将它们分开呢?
decList.Add(十进制值)
在列表中添加一个。如果它们是十进制变量,则不需要对它们进行格式化,除非出于显示目的。每个都已经是一个单独的值,存储在列表中一个单独的元素中,所以我不知道将它们分开是什么意思。这些评论和我的设置不起作用让我觉得你可能有转换问题。非常感谢!接受你的回答。如果你对我的问题投赞成票,我会有足够的声誉来对你的答案投反对票。谢谢。我添加了一些关于使用
字典
的信息,而不是
列表
,这可能更适用