텍스트 파일을 쓰려고합니다. 여기 내 주요 약간 명확성을 위해 클립의 :.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
을 그리고 여기에 파일에 텍스트를 추가에 대한 다스 잠수함 중 하나입니다
이 같은 일을 추가 메서드는 약 12 개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가 많은 추가 기능에 문제가 있다는 것을 안다. 그래서 나는 잠수함에서 TempSB를 사용했는데, 똑같은 문제가있다. SB에 직접 추가하면, 유일한 차이점은 "휴식 "몇 자 전에 발생합니다.
어떤 일이 일어날 지 제안 할 수 있습니까?
의 StringBuilder가 파손되지 않습니다
은 한 줄에 당신을 위해이 작업을 수행하는 편리한 방법이있다. Using 문을 잊어 버리는 것은 표준 버그입니다. –
"StringBuilder"에 작은 ".Append's가 많이있는"문제점 "은 무엇입니까? – Fabio
@Fabio - 현재 할당 된 크기에 도달하면 .Net 스트림 관련 개체가 메모리 할당량을 두 배로 늘립니다. 이러한 블록을 보관하는 테이블은 작기 때문에이 버퍼 제한을 계속 유지하도록 쓰기를 구성하면 매우 작은 크기에서도 "공간이 부족할 수 있습니다". 50k로 스트림을 죽였어. –