[VB.net]如何讀取文字檔最後N行

有時會想讀取某個文字檔最後N行內容,方法很多,通常我們會讀它到陣列或 Stream 然後再從中取用需要的部分。
利用 Seek 指標也是一個方式,例如以下程式讀取文字檔的最後5行內容:

有時會想讀取某個文字檔最後N行內容,方法很多,通常我們會讀它到陣列或 Stream 然後再從中取用需要的部分。

利用 Seek 指標也是一個方式,例如以下程式讀取文字檔的最後5行內容:


Imports System.IO
Imports System.Text
Public Class Form1
    Private Sub Button1_Click() Handles Button1.Click
        MsgBox(讀取文字檔最後N行("d:\1-1000.txt", 5))
    End Sub
    Function 讀取文字檔最後N行(文字檔名 As String, 行數 As Integer)
        Dim 編碼方式 As Encoding = New System.Text.ASCIIEncoding
        Dim 資料檔案 = New FileStream(文字檔名, FileMode.Open)
        Dim 讀寫位置 = 0
        Dim n = 0
        Do
            資料檔案.Seek(-讀寫位置, SeekOrigin.End)
            If 資料檔案.ReadByte() = 13 Then n += 1
            讀寫位置 += 1
        Loop Until n = 行數 Or 資料檔案.Position = 1
        '---從參考點開始讀取---
        Dim byte_陣列(讀寫位置) As Byte
        資料檔案.Read(byte_陣列, 0, 讀寫位置)
        資料檔案.Close()
        '---輸出內容---
        Return 編碼方式.GetString(byte_陣列)
    End Function
End Class

 

下圖為原檔及讀出的最後5行內容:

 

 

image image


ku3