In C #, wie man Pre-pend Textzeichenfolge in eine Datei ohne ursprüngliche Codierung zu ändern

StackOverflow https://stackoverflow.com/questions/2224381

  •  19-09-2019
  •  | 
  •  

Frage

Ich mag-Anh vor (zum Anfang) eine Datei mit einer Zeichenfolge in C #. Derzeit bin ich ersetzt nur Inhalt der Datei mit meiner Zeichenfolge plus ursprünglichen Inhalt. Ich will nicht, dies zu tun, weil Stream Willen Chaos-up Zeichen codiert werden.

Gibt es eine Möglichkeit, ein Textdatei-Anh vor, ohne seine ursprüngliche Codierung wechseln (jedes Zeichen).

Es gibt Gotta ein Weg sein.

War es hilfreich?

Lösung

Der Code am unteren Rand des dieser Seite erscheint lassen Sie in einer Datei lesen, behalten die Codierung und dann schreiben sie die gleiche Codierung wieder aus. Sie sollten dies zu ändern, in der Lage zu tun, was Sie benötigen.

Andere Tipps

Textcodierung ist eine lustige Sache . Wenn Sie Code schreiben, der als codierte Zeichen , der Compiler interpretiert werden wird muss gesagt werden (oder es könnte annehmen), wie die Bytes sollten auf bestimmte Zeichen darzustellen angeordnet sein. Wenn Ihr Programm Agnostiker der Codierung der Dateien, mit denen werden Sie arbeiten, dann wie wollen Sie an den Compiler, um anzuzeigen, wie es sollte das Array von Bytes in der Datei zu interpretieren?

Sie könnte in Erwägung ziehen, die Zeichen als ein Strom von Lesen Bytes anstelle eines Stroms von Zeichen , wenn Sie nicht wissen, wie der Compiler anweisen, diese Bytes zu interpretieren ( dh Sie nicht wissen, welche Codierung wird zur Laufzeit verwendet werden). In diesem Fall müssen Sie, dass Sie was auch immer grundlegende Zeichen hoffen wählte zu Beginn der Datei anhängen kann universell in jedem Codierung erkannt werden; dies liegt daran, dass Sie das Anhängen werden Bytes und nicht Zeichen an den Anfang der Datei.

Sie einfach die Datei lesen, ohne jemals das Bytes decodiert. Und Sie haben eine Codierung für die Kopfzeile wählen -. ASCII scheint in Ihrer Situation die sicherste Wahl zu sein

const String fileName = "test.file";
const String header = "MyHeader";

var headerBytes = Encoding.ASCII.GetBytes(header);
var fileContent = File.ReadAllBytes(fileName);

using (var stream = File.OpenWrite(fileName))
{
    stream.Write(headerBytes, 0, headerBytes.Length);
    stream.Write(fileContent, 0, fileContent.Length);
}

Beachten Sie, dass der Code direkt auf dem Strom arbeitet und keine TextReader oder TextWriter (dies sind die abstrakten Basisklassen StreamReader und StreamWriter ). Sie können eine BinaryReader und BinaryWriter zu vereinfachen den Stream zugreifen, wenn Sie mit Aufgaben Komplexierungsmittel zu tun haben dann nur das Lesen und Schreiben von Array.

fand ich es, was mich richtig Codierung der Datei erhalten Lassen Sie uns: http://www.personalmicrocosms.com/Pages/dotnettips.aspx? c = 15 & t = 17

dann kann ich diese Codierung in der Stream verwenden.

Ist es sicher?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top