テキストファイル書き込み用クラス

これまでC# で作成してきた「SourceToHTML」を、VB.NET に焼きなおしてみます。

Writer.vb


'*******************************************************************************************************
' テキストファイル 書き込み用クラス
'*******************************************************************************************************
Public Class Writer
Private Const NEWLINE As Char = ControlChars.Cr

Private textWriter As System.IO.StreamWriter
Private IsOpen As Boolean = False
Private fileName As String = ""
Private writeBuffer As String = ""
'---------------------------------------------------------------------------------------------------
' 初期化
'---------------------------------------------------------------------------------------------------
Public Sub New(ByVal fileName As String)
Me.fileName = fileName
End Sub
'---------------------------------------------------------------------------------------------------
' 終了
'---------------------------------------------------------------------------------------------------
Protected Overrides Sub Finalize()
Close()
End Sub
Public Sub Close()
'OPENしてたら
If (IsOpen) Then
'書き込み用バッファに何か残っていたら
If (writeBuffer <> "")
'書き込み用バッファの内容を書き込み、バッファをクリアする
putLine()
End If

'CLOSEする
textWriter.Close()
textWriter = Nothing
IsOpen = False
End If
End Sub
'---------------------------------------------------------------------------------------------------
' 出力ファイルに文字列を書く
'---------------------------------------------------------------------------------------------------
Public Sub putString(ByVal s As String)
For i As Integer = 0 To s.Length - 1
putChar(s.Chars(i))
Next
End Sub
'---------------------------------------------------------------------------------------------------
' 出力ファイルに1文字ずつ書く
'---------------------------------------------------------------------------------------------------
Public Sub putChar(ByVal c As Char)
'まだOPENしてなかったら
If (Not IsOpen) Then
'OPENする
textWriter = New System.IO.StreamWriter(fileName, False, System.Text.Encoding.GetEncoding("Shift_JIS"))
IsOpen = True
End If

'改行コードが渡されたら
If (c = NEWLINE) Then
'書き込み用バッファの内容を書き込み、バッファをクリアする
putLine()
Else
'書き込み用バッファに1文字追加する
writeBuffer += c
End If
End Sub
'---------------------------------------------------------------------------------------------------
' 書き込み用バッファの内容を書き込み、バッファをクリアする
'---------------------------------------------------------------------------------------------------
Private Sub putLine()
textWriter.WriteLine(writeBuffer)
writeBuffer = ""
End Sub
End Class