当文件不存在时,在VB中反序列化而不失败

时间:2013-05-04 00:57:53

标签: vb.net visual-studio serialization xml-serialization

我从msdn中删除了一些代码来编写和读取xml文件来保存我的数据,但我需要一点帮助。我有一个名为darr的动态数组。据我了解,我使用此代码将其存储在xml文件中:

    Dim objStreamWriter As New StreamWriter("C:\temp\test.xml")
    Dim x As New XmlSerializer(darr.GetType) 
    x.Serialize(objStreamWriter, darr)
    objStreamWriter.Close()

这是为了阅读它:

    Dim objStreamReader As New StreamReader("C:\temp\test.xml")
    darr = x.Deserialize(objStreamReader)
    objStreamReader.Close()

问题是,我希望应用程序在启动时从文件中读取,这意味着首先调用第二个块,如果文件尚未退出,则会抛出异常。 (如果找不到,第一个块会自动创建文件。)所以有两个问题:

  1. 有没有办法让应用程序在第一次运行时自动创建文件?
  2. 由于文件将为空...代码是否有效?如果没有,是否有解决方法? (好的,这是三个问题!)

1 个答案:

答案 0 :(得分:0)

 If Not File.Exists("C:\temp\test.xml") Then 
        ' Create the file. 
          Dim file As System.IO.FileStream
          file = System.IO.File.Create("C:\temp\test.xml")
    Else
           Dim objStreamWriter As New StreamWriter("C:\temp\test.xml")
           Dim x As New XmlSerializer(darr.GetType) 
           x.Serialize(objStreamWriter, darr)
           objStreamWriter.Close()
 End If