VB.NET Tips - テキストファイル先頭行削除処理

指定されたテキストファイルを読み込み指定でオープンし、一時ファイルを作成し、その一時ファイルを追加指定でオープンします。 読込ファイルの1行目をスキップする様にフラグ処理を行い、順次1行毎に一時ファイルに書込みます。

最終的に、一時ファイルを読込ファイルに上書きコピーし、一時ファイルを削除します。 テキストファイルのコードは Shift-JIS を想定していますので、エンコーディングは Shift-JIS に設定しています。

テキストファイルの読み込みには System.IO.StreamReader クラスを用います。
テキストファイルの追加書込みには System.IO.StreamWriter クラスを用います。

テキストファイル先頭行削除処理

01''' -----------------------------------------------------------------------
02''' <summary>
03''' テキストファイル先頭行削除処理
04''' </summary>
05''' <param name="astrSrcFileName">処理データファイル名
06''' <returns>正常終了:true エラー発生:false</returns>
07''' -----------------------------------------------------------------------
08Private Function DeleteTopTextFile(ByVal astrSrcFileName As String) As Boolean
09    '戻り値初期化
10    DeleteTopTextFile = False
11 
12    Dim sr As System.IO.StreamReader = Nothing
13    Dim sw As System.IO.StreamWriter = Nothing
14    Try
15        'ファイルを読み込みで開く
16        Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis")
17        sr = New System.IO.StreamReader(astrSrcFileName, enc)
18 
19        '一時ファイルを作成する
20        Dim tmpPath As String = System.IO.Path.GetTempFileName()
21 
22        '一時ファイルを書き込みで開く
23        sw = New System.IO.StreamWriter(tmpPath, True, enc)
24 
25        '先頭フラグON
26        Dim blnFirstLine As Boolean = True
27 
28        'テキストを一行ずつ読込
29        While sr.Peek() > -1
30            '一行読込
31            Dim line As String = sr.ReadLine()
32 
33            '先頭行スキップ
34            If blnFirstLine = True Then
35                '先頭フラグONの場合、OFFしてスキップ
36                blnFirstLine = False
37                Continue While
38            End If
39 
40            '一時ファイル書込
41            sw.WriteLine(line)
42        End While
43        '閉じる
44        sr.Close()
45        sw.Close()
46        sr = Nothing
47        sw = Nothing
48 
49        '一時ファイルと入れ替える
50        System.IO.File.Copy(tmpPath, astrSrcFileName, True'OverWrite
51        System.IO.File.Delete(tmpPath)
52 
53        '正常終了
54        DeleteTopTextFile = True
55 
56    Catch ex As Exception
57        'エラー処理が必要な場合は、ここに記述する
58    Finally
59        If sr IsNot Nothing Then
60            sr.Close()
61            sr = Nothing
62        End If
63        If sw IsNot Nothing Then
64            sw.Close()
65            sw = Nothing
66        End If
67    End Try
68End Function

総アクセス数