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 | ''' ----------------------------------------------------------------------- |
08 | Private 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 |
68 | End Function |