テキストファイルを書き込もうとしています。ここでは少しわかりやすくするために切り取られ、私のメインです:.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
このようなものを追加ダース方法についてがありますこれらのほとんどは、この例の2〜3行の代わりに約2kのテキストを追加します。デバッガでSBを調べると、合計結果は15kを少し超えています。しかし、私がファイルを開くとき、それは12kであり、最後はすべて欠けています - それは文字列の1つの途中で途切れます。例外はありません。
私はSBが少しの追加が多いので、私はTempSBをサブシステムで使用していたことを知っていますが、まったく同じ問題があります。SBに直接追加すると、 "は、より早い文字が現れます。
何が起こっている可能性がありますか?
のStringBuilderは壊れません。 Usingステートメントを忘れるのは標準的なバグです。 –
「StringBuilder」にはほとんど「.Append'sがたくさんある」という問題がありますか? – Fabio
@Fabio - 現在割り当てられているサイズに達すると、多数の.Netストリーム関連オブジェクトがメモリ割り当てを倍増します。これらのブロックを保持するためのテーブルは小さいので、このバッファ制限を超えないように書き込みを整理すると、非常に小さいサイズであっても "領域を使い果たしてしまう"ことがあります。私は50kでストリームを殺しました。 –