我想寫一個文本文件。這裏是我的主,稍修剪爲清楚:在.net中的StringBuilder不寫整個文件
Private Sub WriteProperty(FilePath As String)
Try
SB = New StringBuilder
WriteConfig()
'a bunch of methods similar to WriteConfig here...
Dim File As New System.IO.StreamWriter(FilePath)
File.WriteLine(SB.ToString())
Catch ex As Exception
Dim X As Integer = 5 'cheesy way to add a breakpoint
End Try
End Sub
這裏是約十幾潛艇是文本添加到文件中的一個:
Private Sub WriteConfig()
Dim TempSB As New StringBuilder
TempSB.AppendLine("[CONFIG]")
TempSB.AppendLine("[END_CONFIG]")
TempSB.AppendLine("")
SB.Append(TempSB)
End Sub
有十幾方法是添加這樣的事情,他們中的大多數在這個例子中添加了約2k的文本而不是幾行。當我在調試器中檢查SB時,總結果有點超過15K。但是當我打開這個文件的時候,它已經是12k了,最後都沒有了 - 它在一個字符串的中間被切斷了。沒有異常提出。
我知道SB有很多小的附加問題,這就是爲什麼我在subs中使用TempSB的原因,但它有完全相同的問題,如果我直接將它們添加到SB,唯一的區別是「break 「發生在幾個字符之前。
任何人都可以提供一個建議,可能會發生什麼?
的StringBuilder不破。忘記Using語句是一個標準的錯誤。 –
什麼是「StringBuilder」的「問題」有很多小的'。附加'? – Fabio
@Fabio - 當您達到當前分配的大小時,許多與.Net流相關的對象會將其內存分配加倍。用於保存這些塊的表格很小,因此如果您組織寫入操作以使它們保持達到此緩衝區限制,那麼即使在非常小的尺寸下,也可能「空間不足」。我已經殺死了50k的Streams。 –