vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Dateien lesen/schreiben   |   VB-Versionen: VB2010 - VB201523.10.17
Anzahl Zeichen am Ende einer Text-Datei lesen

Eine Routine zum schnellen Lesen einer Anzahl von Textzeichen, die den Abschluß eines langen Textes in einer Datei bilden

Autor:   Manfred BohnBewertung:  Views:  5.075 
ohne HomepageSystem:  Win7, Win8, Win10, Win11kein Beispielprojekt 

Um die Zeichen am Ende eines langen Textes zu lesen, kann man die Datei binär als Filestream öffnen und ab einer bestimten Byte-Position den Inhalt lesen (Random Access). Diese Bytefolge ist durch den passenden Text-Decoder in eine Folge von Textzeichen umzuwandeln.

Es ist zu beachten, daß z.B. in Unicode-Formaten gespeicherte Texte mehr als ein Zeichen pro Byte verwenden. Die "GetMaxByteCount"-Methode der Encoder-Klasse gibt das Maximum an. Deswegen kann der aus der Bytefolge erhaltene Text länger sein, als die angeforderte Zahl der Zeichen (Parameter: LengthOfText) und wird in dem Fall gekürzt.

Function GetEndOfTextFile(ByVal File As String, _
  LengthOfText As Integer, enc As System.Text.Encoding) As String
 
  If Not IO.File.Exists(File) Then Return Nothing
  If LengthOfText < 1 Then Return Nothing
  If enc Is Nothing Then Return Nothing
 
  Dim fi As New IO.FileInfo(File)
  If fi.Length < 1 Then Return Nothing
 
  Dim Bytelength As Integer = enc.GetMaxByteCount(1) * LengthOfText
  If fi.Length < Bytelength Then Bytelength = fi.Length
 
  Dim pos As Integer = fi.Length - Bytelength
  Dim EndOfTextFile(Bytelength - 1) As Byte
 
  Try
    Using fs As New IO.FileStream(File, _
      IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.ReadWrite)
 
      fs.Position = pos
      fs.Read(EndOfTextFile, 0, Bytelength)
    End Using
 
    Dim text As String = enc.GetString(EndOfTextFile)
    If text.Length > LengthOfText Then
      text = text.Substring(text.Length - LengthOfText, LengthOfText)
    End If
 
    Return text
  Catch
    Return Nothing
  End Try
End Function



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.