追記元のテキストファイルを最初に全て読み込み、追記先のテキストファイルに追加書込みを行います。 テキストファイルのコードは 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 使用する文字エンコーディング。
テキストファイル追記処理
''' -----------------------------------------------------------------------
'''
''' テキストファイル追記処理
'''
''' <param name="astrSrcFileName">追記元データファイル名</param>
''' <param name="astrDesFileName">追記先データファイル名</param>
''' 正常終了: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
関連する記事
⇒フォルダコピー(サブフォルダ以下も含む):[Directory.GetFiles,Directory.GetDirectories]⇒指定フォルダ内の全ファイルを削除 :[Directory.GetFiles,File.Delete]
⇒指定フォルダ内の全ファイルをクリア :[Directory.GetFiles,File.Delete]
⇒テキストファイル先頭行削除処理 :[IO.StreamReader,IO.StreamWriter,Encoding.GetEncoding]
⇒ファイルサイズ取得 :[IO.FileInfo]
⇒テキストファイルレコード件数取得 :[IO.StreamReader]
⇒ファイル上書きコピー :[IO.FileInfo,File.Copy]
PR
コメント