方法: Visual Basic でコンマ区切りのテキスト ファイルを読み取る
TextFieldParser
オブジェクトには、構造化されたテキスト ファイル (ログなど) を簡単にかつ効率的に解析する方法が備わっています。 区切り形式のファイルか、固定幅フィールドのテキストを使用したファイルかは、TextFieldType
プロパティで定義します。
コンマ区切りテキスト ファイルを解析するには
新しい
TextFieldParser
を作成します。 次のコードでMyReader
という名前のTextFieldParser
を作成し、test.txt
ファイルを開きます。Using MyReader As New Microsoft.VisualBasic. FileIO.TextFieldParser( "C:\TestFolder\test.txt")
TextField
型と区切り記号を定義します。 次のコードは、TextFieldType
プロパティをDelimited
、区切り記号を "," として定義します。MyReader.TextFieldType = FileIO.FieldType.Delimited MyReader.SetDelimiters(",")
ファイル内のフィールドをループします。 破損している行が見つかった場合は、エラーを報告して解析を続行します。 次のコードは、ファイル内をループし、各フィールド順次表示して、不正にフォーマットされているフィールドをレポートします。
Dim currentRow As String() While Not MyReader.EndOfData Try currentRow = MyReader.ReadFields() Dim currentField As String For Each currentField In currentRow MsgBox(currentField) Next Catch ex As Microsoft.VisualBasic. FileIO.MalformedLineException MsgBox("Line " & ex.Message & "is not valid and will be skipped.") End Try
While
ブロックとUsing
ブロックをそれぞれEnd While
とEnd Using
で閉じます。End While End Using
例
次のコードは、test.txt
ファイルから読み取りを行う例です。
Using MyReader As New Microsoft.VisualBasic.
FileIO.TextFieldParser(
"C:\TestFolder\test.txt")
MyReader.TextFieldType = FileIO.FieldType.Delimited
MyReader.SetDelimiters(",")
Dim currentRow As String()
While Not MyReader.EndOfData
Try
currentRow = MyReader.ReadFields()
Dim currentField As String
For Each currentField In currentRow
MsgBox(currentField)
Next
Catch ex As Microsoft.VisualBasic.
FileIO.MalformedLineException
MsgBox("Line " & ex.Message &
"is not valid and will be skipped.")
End Try
End While
End Using
信頼性の高いプログラミング
次の条件を満たす場合は、例外が発生する可能性があります。
指定された形式で行を解析できない (MalformedLineException)。 例外の原因となった行が例外メッセージで報告され、その行に含まれているテキストには ErrorLine プロパティが代入されます。
指定されたファイルが存在しない (FileNotFoundException)。
部分信頼の状況下で、ファイルにアクセスするために必要なアクセス許可がユーザーにない。 (SecurityException)。
パスが長すぎる (PathTooLongException)。
ファイルにアクセスする十分なアクセス許可がユーザーにない (UnauthorizedAccessException)。
関連項目
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示