| 

.NET C# Java Javascript Exception

5
Hallo,

ich arbeite mit Dateien, die so etwa 10 bis 50 GB gross sind (SharpDevelop 4.3)


1. Schritt:
mit Append füge ich der Datei bis max. 8 Paddings zu (8 byte)

2. Schritt: hier werden die Daten bearbeitet

3. Schritt: Die im 1. Schritt zugefügten Paddings sollen wieder entfernt werden


Das Problem besteht im Schritt 3. Ich will, aus Zeitgründen, nicht wieder die ganze Datei einlesen. Welche Möglichkeit gibt es, den 3. Schritt schnell umzusetzen? Enorm wichtig ist hier die Zeit!

Alle Schritte müssen nacheinander ausgeführt werden und können nicht kombiniert werden. Ich freue mich auf hilfreiche Antworten.

boga
18.09.2013
boga 71 5
1 Antwort
3
Ich habe gerade keine Zeit es auszuprobieren - aber hast Du schon mal versucht, mittels FileStream.SetLength() die Datei um die gewünschte Anzahl von Bytes zu verkürzen?
18.09.2013
Matthias Hlawatsch 13,2k 4 9
DANKE!!!! Die Lösung ist einfach, schnell und wohl auch sehr sicher! Hätte ich mal gleich gefragt, als zuvor 3 Std. zu googeln. Hier mein Testaufbau, falls jemand es probieren möchte:

internal bool DestroyNBytes(string fileName, int n)
{
FileStream fs = File.Open(fileName, FileMode.Open);

try
{
fs.SetLength(fs.Length - n);
return true;
}
catch{return false;}

finally{fs.Flush(); fs.Close(); fs.Dispose();}
}
boga 18.09.2013
Freut mich, daß ich helfen konnte :-) Setzt Du noch den grünen Haken?
Du könntest Deinen Code noch durch Verwendung des using-Befehls verschönern, wenn Du magst.

Ich bin übrigens auch per Google auf die Lösung gekommen, habe aber nur ca. 10min gebraucht:

"c# file random access" brachte mich auf

http://stackoverflow.com/questions/265639/net-c-sharp-random-access-in-text-files-no-easy-way

und damit auf die Seek-Methode.

Mit "filestream seek remove" kam ich dann zu

http://forums.codeguru.com/showthread.php?431999-remove-the-last-line-from-StreamReader

und damit zu der Idee mit SetLength.
Matthias Hlawatsch 18.09.2013
das zeigt wieder mal, dass es darauf ankommt wie man in Google sucht ;-)))
luedi 19.09.2013

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH