Ich möchte die letzte Zeile einer Textdatei nach dem Lesen des Inhalts loswerden. Die Textdateien sind ziemlich groß, daher ist Lesen/Schreiben aufgrund von Leistungsproblemen keine Option.Abschneiden einer TXT-Datei durch 'x' Bytes in C#
Meine aktuelle Idee besteht darin, die Anzahl der Bytes zu berechnen, die die letzte Zeile darstellt (zusammen mit dem Übertragsrücklauf) und die Datei abzuschneiden.
Viele der Optionen, die ich gesehen habe mit "Filestream.setLength()" bezeichnet, und ich bin verwirrt, wie das funktioniert.
Würde das nicht nur die Datei zurückschreiben, sondern die Datei auf eine bestimmte Anzahl von Bytes stoppen, da die 'read' Funktion die Bytes einliest und sie in einen Puffer zurückschreibt? Oder könnte ich diese Funktion beim Lesen nutzen und die "Endposition" der Textdatei zurück verschieben, sagen wir 24 Bytes?
Dies ist der aktuelle Code I
try
{
//reading
using (StreamReader reader = new StreamReader(filePath))
{
while (!reader.EndOfStream)
{
//gets the line
line = reader.ReadLine();
if (!line.StartsWith("KeyWord", StringComparison.InvariantCultureIgnoreCase))
{
//add number of lines
lineCount += 1;
}
else
{
//Finds the occurence of the first numbers in a string
string resultString = Regex.Match(line, @"\d+").Value;
long lastLineBytes = 0;
foreach (char c in line)
{
//each char takes up 1 byte
lastLineBytes++;
}
//carriage return
lastLineBytes += 2;
long fileLength = new FileInfo(filePath).Length;
Trace.WriteLine("The length of the file is " + fileLength);
//the size of the file - the last line
//truncate at this byte position, and we will be done.
long newFileLength = fileLength - lastLineBytes;
//Truncation goes ehre
}
}
}
}
catch (Exception e)
{
throw e;
}
https://msdn.microsoft.com/en-us/library/system.io.filestream.setlength.aspx – SLaks
ich durch diese Zeilen lesen, und ich habe immer noch Schwierigkeiten zu verstehen, wie ich das in einem verwenden könnte trainieren. Hast du irgendwelche Beispiele dafür, die ich ausprobieren könnte? – Childishforlife
Ich kann nicht versichern, aber ich glaube, dass das Ändern der Größe des Streams nur die Dateitabellenindizes ändert, um nur auf die linken Bytes zu zeigen, ein Testprogramm zu erstellen, das wirklich einfach ist und es zu testen, das ist Ihre beste Chance. – Gusman