如何从VB中的文本文件中读取特定行 [英] How to read a specific line from a text file in VB

查看:74
本文介绍了如何从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 a String() 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆