방법: Visual Basic에서 고정 너비 텍스트 파일 읽기
TextFieldParser
개체는 로그와 같은 구조적 텍스트 파일을 쉽고 효율적으로 구문 분석하는 방법을 제공합니다.
TextFieldType
속성은 구문 분석된 파일이 구분된 파일인지 또는 고정 너비 텍스트 필드가 있는 파일인지를 정의합니다. 고정 너비 텍스트 파일의 끝에 있는 필드는 가변 너비를 가질 수 있습니다. 끝에 있는 필드에 가변 너비를 지정하려면 0 이하의 너비로 정의합니다.
고정 너비 텍스트 파일을 구문 분석하려면
새
TextFieldParser
를 만듭니다. 다음 코드는Reader
라는TextFieldParser
를 만들고test.log
파일을 엽니다.Using Reader As New Microsoft.VisualBasic. FileIO.TextFieldParser("C:\TestFolder\test.log")
너비와 형식을 정의하여
TextFieldType
속성을FixedWidth
로 정의합니다. 다음 코드는 텍스트 열을 정의합니다. 첫 번째 열은 너비가 5자이고, 두 번째 열은 10자, 세 번째 열은 11자, 네 번째 열은 가변 너비입니다.Reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth Reader.SetFieldWidths(5, 10, 11, -1)
파일의 필드를 반복합니다. 손상된 줄이 있는 경우 오류를 보고하고 구문 분석을 계속합니다.
Dim currentRow As String() While Not Reader.EndOfData Try currentRow = Reader.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
을 사용하여While
및Using
블록을 닫습니다.End While End Using
예시
이 예제에서는 test.log
파일에서 읽습니다.
Using Reader As New Microsoft.VisualBasic.FileIO.
TextFieldParser("C:\TestFolder\test.log")
Reader.TextFieldType =
Microsoft.VisualBasic.FileIO.FieldType.FixedWidth
Reader.SetFieldWidths(5, 10, 11, -1)
Dim currentRow As String()
While Not Reader.EndOfData
Try
currentRow = Reader.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