Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
TextFieldParser nesnesi, günlükler gibi yapılandırılmış metin dosyalarını kolayca ve verimli bir şekilde ayrıştırmak için bir yol sağlar.
özelliği, TextFieldType ayrıştırılan dosyanın sınırlandırılmış bir dosya mı yoksa sabit genişlikli metin alanları olan bir dosya mı olduğunu tanımlar. Sabit genişlikli bir metin dosyasında, sonundaki alanın genişliği değişken olabilir. Sonundaki alanın değişken genişliği olduğunu belirtmek için, sıfırdan küçük veya sıfıra eşit bir genişliğe sahip olacak şekilde tanımlayın.
Sabit genişlikli metin dosyasını ayrıştırmak için
Yeni bir
TextFieldParseroluşturun. Aşağıdaki kodTextFieldParseradlıReaderoluşturur ve dosyatest.log'yı açar.Using Reader As New Microsoft.VisualBasic. FileIO.TextFieldParser("C:\TestFolder\test.log")TextFieldTypeözelliğini olarakFixedWidthtanımlayın, genişliği ve biçimi tanımlayın. Aşağıdaki kod metin sütunlarını tanımlar; birincisi 5 karakter genişliğinde, ikinci 10, üçüncü 11 ve dördüncüsü değişken genişliktedir.Reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.FixedWidth Reader.SetFieldWidths(5, 10, 11, -1)Dosyadaki alanlarda gezin. Herhangi bir satır bozuksa bir hata bildirin ve ayrıştırma işlemine devam edin.
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 TryWhileveUsingbloklarınıEnd WhileveEnd Usingile kapatın.End While End Using
Örnek
Bu örnek test.log dosyasını okur.
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
Sağlam programlama
Aşağıdaki koşullar bir özel duruma neden olabilir:
Bir satır, belirtilen biçim (MalformedLineException ) kullanılarak ayrıştırılamaz. Özel durum iletisi özel duruma neden olan satırı belirtirken ErrorLine , özellik satırda yer alan metne atanır.
Belirtilen dosya yok (FileNotFoundException ).
Kullanıcının dosyaya erişmek için yeterli izinlere sahip olmadığı kısmi güven durumu. (SecurityException)
Yol çok uzun (PathTooLongException).
Kullanıcının dosyaya (UnauthorizedAccessException ) erişmek için yeterli izinleri yok.
Ayrıca bakınız
- Microsoft.VisualBasic.FileIO.TextFieldParser
- Nasıl yapılır: Comma-Delimited Metin Dosyalarından Okuma
- Nasıl yapılır: Birden Çok Biçimli Metin Dosyalarından Okuma
- TextFieldParser Nesnesiyle Metin Dosyalarını Ayrıştırma
- İzlenecek yol: Visual Basic'te Dosyaları ve Dizinleri Düzenleme
- Sorun Giderme: Metin Dosyalarından Okuma ve Metin Dosyalarına Yazma