2010-03-07 25 views
20

Ich habe eine Binärdatei, an die ich am Ende der Datei einen Datenblock anhängen möchte. Wie kann ich dies mit C# und .net erreichen? Gibt es auch Überlegungen beim Schreiben an das Ende einer Binärdatei? Vielen dank für Deine Hilfe.Wie hängen Daten an eine Binärdatei an?

Antwort

23
private static void AppendData(string filename, int intData, string stringData, byte[] lotsOfData) 
{ 
    using (var fileStream = new FileStream(filename, FileMode.Append, FileAccess.Write, FileShare.None)) 
    using (var bw = new BinaryWriter(fileStream)) 
    { 
     bw.Write(intData); 
     bw.Write(stringData); 
     bw.Write(lotsOfData); 
    } 
} 
+1

+1 Ich mag diese Antwort, weil es Ihnen zeigt, wie Sie native Datentypen zusätzlich als binäre Darstellungen in den Stream schieben. –

+2

@jdk - was natürlich eine Menge von Annahmen darüber macht, was die zugrunde liegenden Daten * sind *; ein 'byte []' sicher, das würde immer Sinn machen ... aber die Kodierung für die anderen könnte * Meilen * sein. –

+1

+1 für den binären Schreiber, wenn Sie binäre Daten schreiben, ist es immer am besten, den Schreiber –

5

sollten Sie in der Lage sein, dies über die Stream zu tun:

using (FileStream data = new FileStream(path, FileMode.Append)) 
{ 
    data.Write(...); 
} 

Was Erwägungen - die wichtigste wäre: anhängen nicht die zugrunde liegende Datenformat unterstützt? Viele nicht, es sei denn, es sind Ihre eigenen Rohdaten oder Text usw. Ein wohlgeformtes xml-Dokument unterstützt zum Beispiel nicht append (ohne Berücksichtigung des finalen End-Elements). Noch wird so etwas wie ein Word-Dokument. Manche tun es jedoch. Damit; Ihre Daten OK mit diesem ist ...

0

StreamWriter und Referenzierung DotNetPerls verwenden, stellen Sie sicher, dass die True boolean zum StreamWriter Konstruktor hinzufügen, wenn sonst leer bleiben, wird es wie üblich überschreiben:

using System.IO; 

class Program 
{ 
    static void Main() 
    { 
    // 1: Write single line to new file 
    using (StreamWriter writer = new StreamWriter("C:\\log.txt", true)) 
    { 
     writer.WriteLine("Important data line 1"); 
    } 
    // 2: Append line to the file 
    using (StreamWriter writer = new StreamWriter("C:\\log.txt", true)) 
    { 
     writer.WriteLine("Line 2"); 
    } 
    } 
} 

Output 
    (File "log.txt" contains these lines.) 

Important data line 1 
Line 2 

Das ist die Lösung, nach der ich eigentlich gesucht habe, als ich von Google hierher kam, obwohl es keine binäre Datei war, hoffe, dass es jemand anderem hilft.

Verwandte Themen