有時會想讀取某個文字檔最後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行內容: