微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

StreamWriter随机不将最后一行输出到文件中

如何解决StreamWriter随机不将最后一行输出到文件中

我正在尝试将一个类保存到文本文件中,并且得到的结果好坏参半。一半时间,添加的最后一行在文件中,有时不在文件中。我无法获得一致的输出文件

因此,我添加一个调试程序来向我展示在StreamWriter.Write之前正在写的内容,并且它显示了我添加的行,但未在文件显示

enter image description here

^此行是未写入文件的最后一行。

这是我保存数据的代码的样子:

  Private sub SaveMemoUsersFile()

      If _memoList is nothing Then
        return
      End If

      Dim memofile = Path.Combine(Configuration.DataFileLocations,$"{Configuration.CompanyID}ucmemoUsers.txt")
      Const quote As String = """"
      Const comma As String = ","
      Dim both = $"{quote}{comma}{quote}"

      Using sw = New StreamWriter(memofile)
        For Each memoUsers As MemoUsers In _memoList
          Dim sb = New StringBuilder()
          sb.Append(quote)
          sb.Append(memoUsers.Initials)
          sb.Append(both)
          sb.Append(memoUsers.EmailAddress)
          sb.Append(both)
          sb.Append(memoUsers.DelinquentLetterCode)
          sb.Append(both)
          sb.Append(memoUsers.Description)
          sb.Append(quote)
          'sb.Append(vbCr)
          console.write(sb) <--- shows the last line
          sw.WriteLine(sb.ToString()) <--- but doesn't write it to the file
        Next
      End Using

    _memoList = nothing

  End sub

有人有什么建议吗?我完全不知道为什么它会随机写入文件

解决方法

也可以在stringbuilder中构建文件并将其写入:

Private sub SaveMemoUsersFile()

      If _memoList is Nothing Then
        return
      End If

      
      Dim q = """"
      Dim b = $"{q},{q}"

      Dim sb = New StringBuilder()

      For Each memoUsers As MemoUsers In _memoList
          sb.Append(q)
          sb.Append(memoUsers.Initials).Append(b)
          sb.Append(memoUsers.EmailAddress).Append(b)
          sb.Append(memoUsers.DelinquentLetterCode).Append(b)
          sb.Append(memoUsers.Description).AppendLine(q)
      Next

      Dim memofile = Path.Combine(Configuration.DataFileLocations,$"{Configuration.CompanyID}ucMemoUsers.txt")
     
      IO.File.WriteAllText(memoFIle,sb.ToString())

      _memoList = nothing

  End sub

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。