02. juli 2007 - 23:10Der er
8 kommentarer og 1 løsning
Simpelt spørgsmål. venligst hjælp!
Hej
Er ved at lave et mindre program som læser seneste linier fra en TXT fil. Men den skal IKKE indlæse hele filen, da denne fil er en log som hurtigt kan fylde MANGE GB's og derved vil smadre hukommelsen.
Hvordan sørger jeg for, at den kun henter de første 50 linier?
Ligenu benytter jeg
Dim infoReader As System.IO.FileInfo infoReader = My.Computer.FileSystem.GetFileInfo("C:\test.txt") MsgBox("File is " & infoReader.Length & " bytes.")
Lige nu har jeg en timer som opdaterer et felt hvert sekund, men man kan ikke markere den. Er der nogen måde jeg kan gøre sådan, at den selv tjekker om der er en ny linie og automatisk tilføjer den hvis der er en ny linie altså?
contentbox.Items.Clear()
Dim infoReader As System.IO.FileInfo infoReader = My.Computer.FileSystem.GetFileInfo("C:\test.txt") MsgBox("File is " & infoReader.Length & " bytes.")
Imports System Imports System.IO Imports System.Threading
Namespace E Public Class TailSniff Private filename As String Private pos As Long
Public Sub New(ByVal filename As String) Me.filename = filename pos = 0 End Sub Public Function Read() As StreamReader Dim fs As FileStream = New FileStream(filename, FileMode.Open, FileAccess.Read) Dim len As Long = fs.Length fs.Seek(pos, SeekOrigin.Begin) Dim b(len - pos) As Byte fs.Read(b, 0, b.Length) fs.Close pos = len Return New StreamReader(New MemoryStream(b)) End Function End Class Public Class MainClass Public Shared Sub Main(ByVal args As String()) Dim ts As TailSniff = New TailSniff("C:\z.z") While True Dim sr As StreamReader = ts.Read While sr.Peek > 0 Dim line As String = sr.ReadLine Console.WriteLine(line) End While sr.Close Thread.Sleep(10) End While End Sub End Class End Namespace
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.