Wie schreibe ich Daten an einer bestimmten Stelle in c #?

8

Ich mache eine Bewerbung in c #. In dieser Anwendung habe ich ein Byte-Array und möchte diese Byte-Array-Daten an eine bestimmte Position schreiben.

Hier habe ich die folgende Logik verwendet.

%Vor%

Aber wenn ich Daten in eine Datei schreibe, beginnt sie mit dem Schreiben von Anfang an.

Meine Bedingung ist, dass angenommen, dass ich bei der ersten Datei leere Datei habe und ich möchte beginnen, in Datei von Position 10000 zu schreiben. Bitte helfen Sie mir. Danke im Voraus.

    
Dany 23.11.2011, 13:38
quelle

4 Antworten

10

Versuchen Sie niemals, Binärdaten als Zeichenfolgen zu schreiben, wie Sie es tun. Es wird nicht korrekt funktionieren. Schreibe Binärdaten als Binärdaten. Sie können Stream anstelle von StreamWriter verwenden.

%Vor%     
svick 23.11.2011, 13:49
quelle
3

Sie können die Position im Stream wie folgt einstellen:

%Vor%

Fügen Sie dies vor Ihrem WriteLine code hinzu.

Beachten Sie, dass ich keinen Code hinzugefügt habe, um zu überprüfen, ob sich mindestens 1000 Zeichen in der Datei befinden.

    
Øyvind Bråthen 23.11.2011 13:42
quelle
1

Die WriteLine Überladung, die Sie verwenden, ist diese:

TextWriter.WriteLine-Methode (Char [], Int32, Int32)

Insbesondere ist das angegebene Argument IndexInFile tatsächlich der Index im Puffer , von dem aus nicht der Index in der Datei beginnt, mit dem zu schreiben begonnen wird - dies erklärt, warum Sie am Anfang der Datei nicht wie erwartet bei IndexInFile schreiben.

Sie sollten zuerst Zugriff auf den zugrunde liegenden Stream und Seek auf die gewünschte Position in der Datei erhalten und dann in die Datei schreiben.

    
Justin 23.11.2011 13:43
quelle
1

Vielleicht ein bisschen hacky, aber Sie können auf die Eigenschaft BaseStream von StreamWriter zugreifen und Seek(long offset, SeekOrigin origin) darauf verwenden. (Aber Vorsicht, nicht jeder Stream kann Seek verwenden.)

    
Kolky 23.11.2011 13:40
quelle

Tags und Links