如何从VB中的文本文件中读取特定行 [英] How to read a specific line from a text file in VB
问题描述
我正在创建一个程序,该程序应该将文本写入文本文件,并且应该能够从 VB 中的文本文件中读取特定行(因此,如果我需要读取特定名称,我可以选择第 5 行,然后将显示在文本框中).我能够从文本文件中读取文本,但我不知道如何控制特定行.
I am creating a program that is supposed to write text into a text file, and should be able to read specific lines from a text file in VB (so if i needed to read a specific name I could select line 5 and it would display in the textbox). I am able to read the text from the text file but I do not know how to control a specific line.
这是我的代码:
Public Class Form1
Private Sub btnSubmit_Click(sender As System.Object, e As System.EventArgs) Handles btnSubmit.Click
Dim writer As New System.IO.StreamWriter("/text.txt", True)
writer.WriteLine(txtFirstName.Text)
writer.WriteLine(txtLastName.Text)
writer.WriteLine("-------------------------------------")
writer.Close()
End Sub
Private Sub btnRead_Click(sender As System.Object, e As System.EventArgs) Handles btnRead.Click
Dim reader As New System.IO.StreamReader("/text.txt")
Dim FirstName, LastName As String
FirstName = reader.ReadLine()
LastName = reader.ReadLine()
reader.Close()
txtFirstName.Text = FirstName
txtLastName.Text = LastName
End Sub
Private Sub btnClear_Click(sender As System.Object, e As System.EventArgs) Handles btnClear.Click
txtFirstName.Clear()
txtLastName.Clear()
End Sub
End Class
任何帮助将不胜感激.谢谢!
Any help would be appreciated. Thanks!
推荐答案
您必须阅读所有行,直到您感兴趣的行.例如:
You will have to read all lines up to the one you're interested in. For example:
Function ReadLineWithNumberFrom(filePath As String, ByVal lineNumber As Integer) As String
Using file As New StreamReader(filePath)
' Skip all preceding lines: '
For i As Integer = 1 To lineNumber - 1
If file.ReadLine() Is Nothing Then
Throw New ArgumentOutOfRangeException("lineNumber")
End If
Next
' Attempt to read the line you're interested in: '
Dim line As String = file.ReadLine()
If line Is Nothing Then
Throw New ArgumentOutOfRangeException("lineNumber")
End If
' Succeded!
Return line
End Using
End Function
这是因为文本行是可变长度记录,无法猜测特定行开始的确切文件偏移量 —不是没有索引.
This is because lines of text are variable-length records, and there is no way to guess the exact file offset where a specific line begins — not without an index.
如果您经常需要加载特定行,您还有更多选择:
If you frequently need to load a specific line, you have some more options:
将完整的文本文件加载到内存中,例如通过使用
File.ReadAllLines("Foobar.txt")
.这将返回一个String()
数组,您可以直接通过行号访问该数组.
Load the complete text file into memory, e.g. by using
File.ReadAllLines("Foobar.txt")
. This returns aString()
array which you can access by line number directly.
手动创建行号索引.也就是说,逐行处理一个文本文件,并在执行过程中填充一个Dictionary(Of Integer, Integer)
.键是行号,值是文件偏移量.这允许您.Seek
到特定行的开头,而不必将整个文件保存在内存中.
Create a line number index manually. That is, process a text file line by line, and fill a Dictionary(Of Integer, Integer)
as you go. The keys are line numbers, and the values are file offsets. This allows you to .Seek
right to the beginning of a specific line without having to keep the whole file in memory.
这篇关于如何从VB中的文本文件中读取特定行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!