VB.NET Tips - テキストファイル追記処理
追記元のテキストファイルを最初に全て読み込み、追記先のテキストファイルに追加書込みを行います。
テキストファイルのコードは Shift-JIS を想定していますので、エンコーディングは Shift-JIS に設定しています。
テキストファイルの読み込みには System.IO.File.ReadAllText を用います。
テキストファイルの追加書込みには System.IO.File.AppendAllText を用います。
System.IO.File.ReadAllText 関数について
Public Shared Function ReadAllText(path As String, encoding As Encoding) As String path: 読み取り用に開かれるファイルパス。 encoding ファイルの内容に適用されるエンコーディング。 戻り値: ファイルのすべての行を格納している文字列。
System.IO.File.AppendAllText 関数について
Public Shared Sub AppendAllText(path As String, contents As String, encoding As Encoding) path: 指定した文字列の追加先となるファイル。 contents ファイルに追加する文字列。 encoding 使用する文字エンコーディング。
テキストファイル追記処理
''' ----------------------------------------------------------------------- '''''' テキストファイル追記処理 ''' ''' 追記元データファイル名 ''' 追記先データファイル名 '''正常終了:true エラー発生:false '''作成したファイルを送信ファイルに追記する ''' ----------------------------------------------------------------------- Function AppendTextFile(ByVal astrSrcFileName As String, ByVal astrDesFileName As String) As Boolean '戻り値初期化 AppendTextFile = False Try Dim strFileText As String = "" Dim decFileSize As Decimal = 0 'データファイルサイズ '追記先データファイル存在確認 If System.IO.File.Exists(astrDesFileName) Then 'ファイルサイズ取得 decFileSize = FileLen(astrDesFileName) End If If decFileSize = 0 Or decFileSize = 1 Then 'ファイルサイズが0または1バイトの場合、送信ファイル置き換え(上書き) My.Computer.FileSystem.CopyFile(astrSrcFileName, astrDesFileName, True) Else 'それ以外の場合、送信ファイルに追記 Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS") '作成したファイルのテキストを取得 strFileText = System.IO.File.ReadAllText(astrSrcFileName, enc) '送信ファイルの末尾に追記 System.IO.File.AppendAllText(astrDesFileName, strFileText, enc) End If '正常終了 AppendTextFile = True Catch ex As Exception 'エラー処理が必要な場合は、ここに記述する End Try End Function