簡體   English   中英

如何從VB.net中的.txt文件讀取特定行

[英]How to read a specific line from a .txt file in VB.net

我目前正在嘗試創建一個詞匯測試程序。 我真正想做的是讓程序生成一個隨機數,並讓程序從.txt文件中選擇與該隨機數相對應的一行文本。

我設法使隨機數起作用,但是我不知道如何從.txt文件中讀取特定行。

我對My.Computer.FileSystem.ReadAllText(filename, text, etc)相當精通,但是我似乎找不到任何方法來實現我的目標。

如果可以幫助,則解決方案最好避免使用StreamReader

我會包含一些代碼,但是它只有幾行,並且只包含隨機數生成器,所以很容易說明。

您可以使用System.IO.File.ReadAllLines和數組索引器:

Private Shared rnd As New Random()

Public Shared Function GetRandomLine(path As String) As String
    Dim allLines As String() = File.ReadAllLines(path)
    Dim randomLine As String = allLines(rnd.Next(allLines.Length))
    Return randomLine
End Function

請注意,帶有一個參數的Random.Next會創建一個從0到allLines.Length - 1 (因此不包含上限)的隨機數。 沒錯,否則您將獲得IndexOutOfRangeException異常。

如果您確定文件會很小,那么從文本文件讀取行的最簡單方法是使用:

Dim lines = System.IO.File.ReadAllLines(fullFileName)

lines將是一個字符串數組,因此您可以從該數組訪問隨機行。

但是,如果您不確定文件太小,並且不想冒險用完內存,那么StreamReader的確不是那么糟糕-它的設計目的是在讀取文本文件時易於使用,與FileStream和其他一些方法不同,這有點棘手。

首先,您需要知道文件中有多少行,因此您必須通讀文件一次,然后在選擇隨機數后再次讀取文件。

Dim numLines as Integer = 0
Using sr As New System.IO.StreamReader(fullFileName)
    Dim line As String = sr.ReadLine()
    While line IsNot Nothing
        numLines = numLines + 1
        line = sr.ReadLine()
    End While
End Using

確定行數后,您可以選擇隨機數,然后重復該過程,並在預定行處停止。

我在這里有一篇文章,提供了ReadAll方法的替代方法。 只要文件相對較小並且內存使用率不成問題,ReadAll方法就沒有問題,通常是這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM