2016-09-15 112 views
0

基本上如此。我要更新在文本文件中的库存水平,所以我已经把我所有的信息到一个文本文件,像这样:如何将文本文件中的数据转换为数组并返回到文本文件

Stock level, Target level, Restock  
    10,   20,   5 

等,我需要能够改变让我们说“10”通过它发送到然后将数组保存并将其发送回文本文件。例如。我拿“10”做“10”(但作为一个变量) - 数量.....数量是用户订购的数量。在这个例子中,假设数量= 3,那么它会将“10”变成“7”,并将其保存在文本文件中作为“7”,所以下次我打开它会说“7”而不是“10”?任何想法将不胜感激。

+0

相当奇怪的是没有库存项目标识。通常情况下,您将使用数据库,但对于较小的数据集,您可以创建一个类。将它存储在一个List中并将其序列化。这些号码会返回号码 – Plutonix

+0

谢谢你生病尝试你的想法,并告诉你它是否修复它。 :) – Matt

回答

0

像Plutonix说,这样的事情是什么数据库是为做,你将需要某种标识的每个股票的“行” ......但是,如果你绝对必须将数据存储为文本,然后你将它存储为xml并序列化它会好得多。这是一个概念的例子,它只使用一个“行”,但可以添加更多。这只是向你展示如何保存,加载,操作,然后重新保存数据:

Imports System.IO 
    Imports System.Xml.Serialization 

    Public Class Form1 
     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
      Dim filepath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "test.xml") 
      Dim lstStocks As New List(Of Stock) 
      lstStocks.Add(New Stock("stk1", 10, 20, 5)) 

      MsgBox(lstStocks(0).Name & vbCrLf & 
       "Stock Level: " & lstStocks(0).StockLevel.ToString & vbCrLf & 
       "Target Level: " & lstStocks(0).TargetLevel.ToString & vbCrLf & 
       "Restock:" & lstStocks(0).Restock.ToString) 

      Serialize(lstStocks, filepath) 

      Dim firstLoadStocks As List(Of Stock) = Deserialize(filepath) 
      firstLoadStocks(0).StockLevel -= 3 
      Serialize(firstLoadStocks, filepath) 

      Dim secondLoadStocks As List(Of Stock) = Deserialize(filepath) 
      MsgBox(secondLoadStocks(0).Name & vbCrLf & 
       "Stock Level: " & secondLoadStocks(0).StockLevel.ToString & vbCrLf & 
       "Target Level: " & secondLoadStocks(0).TargetLevel.ToString & vbCrLf & 
       "Restock:" & secondLoadStocks(0).Restock.ToString) 

      Me.Close() 
     End Sub 

     Public Sub Serialize(ByVal ListOfStocks As List(Of Stock), ByVal fp As String) 
      Using sw As New StreamWriter(fp) 
       Dim xmlSer As New XmlSerializer(ListOfStocks.GetType) 
       xmlSer.Serialize(sw, ListOfStocks) 
      End Using 
     End Sub 

     Public Function Deserialize(ByVal fp As String) As List(Of Stock) 
      Dim lstStocks As New List(Of Stock) 
      Using sr As New StreamReader(fp) 
       Dim xmlSer As New XmlSerializer(lstStocks.GetType) 
       lstStocks = xmlSer.Deserialize(sr) 
      End Using 
      Return lstStocks 
     End Function 
    End Class 
+0

这已经解决了我的问题谢谢:)非常感谢 – Matt

相关问题