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
    使用する文字エンコーディング。

テキストファイル追記処理

01''' -----------------------------------------------------------------------
02''' <summary>
03''' テキストファイル追記処理
04''' </summary>
05''' <param name="astrSrcFileName">追記元データファイル名
06''' <param name="astrDesFileName">追記先データファイル名
07''' <returns>正常終了:true エラー発生:false</returns>
08''' <remarks>作成したファイルを送信ファイルに追記する</remarks>
09''' -----------------------------------------------------------------------
10Function AppendTextFile(ByVal astrSrcFileName As String,
11                          ByVal astrDesFileName As String) As Boolean
12    '戻り値初期化
13    AppendTextFile = False
14 
15    Try
16        Dim strFileText As String = ""
17        Dim decFileSize As Decimal = 0        'データファイルサイズ
18 
19        '追記先データファイル存在確認
20        If System.IO.File.Exists(astrDesFileName) Then
21            'ファイルサイズ取得
22            decFileSize = FileLen(astrDesFileName)
23        End If
24 
25        If decFileSize = 0 Or decFileSize = 1 Then
26            'ファイルサイズが0または1バイトの場合、送信ファイル置き換え(上書き)
27            My.Computer.FileSystem.CopyFile(astrSrcFileName, astrDesFileName, True)
28        Else
29            'それ以外の場合、送信ファイルに追記
30            Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
31            '作成したファイルのテキストを取得
32            strFileText = System.IO.File.ReadAllText(astrSrcFileName, enc)
33            '送信ファイルの末尾に追記
34            System.IO.File.AppendAllText(astrDesFileName, strFileText, enc)
35        End If
36 
37        '正常終了
38        AppendTextFile = True
39 
40    Catch ex As Exception
41        'エラー処理が必要な場合は、ここに記述する
42    End Try
43End Function

総アクセス数