Public Function ReadTailLines(ByVal filename As String, ByVal lineCount As Integer) Dim sep() As String = {vbCrLf}
Using ifs As IO.FileStream = IO.File.OpenRead(filename) Dim allBuf As New List(Of Byte) Dim len As Integer = lineCount * 100 Dim pos As Long = ifs.Length Dim lines() As String
Do pos -= len If pos < 0 Then len += pos pos = 0 End If
Dim tmpBuf(len) As Byte ifs.Seek(pos, IO.SeekOrigin.Begin) ifs.Read(tmpBuf, 0, len)
allBuf.InsertRange(0, tmpBuf) lines = Text.Encoding.Default.GetString(allBuf.ToArray(), 0, allBuf.Count).Split(sep, StringSplitOptions.None) Loop While pos > 0 And lines.Length < lineCount (続く)