问题描述
我正在尝试将一个类保存到文本文件中,并且得到的结果好坏参半。一半时间,添加的最后一行在文件中,有时不在文件中。我无法获得一致的输出到文件。
因此,我添加了一个调试程序来向我展示在StreamWriter.Write
之前正在写的内容,并且它显示了我添加的行,但未在文件中显示。
^此行是未写入文件的最后一行。
这是我保存数据的代码的样子:
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