2010-03-07 16 views
20

Mam plik binarny, do którego chcę dodać fragment danych na końcu pliku, w jaki sposób mogę to osiągnąć przy użyciu C# i .net? również czy są jakieś uwagi, które należy wziąć, pisząc na końcu pliku binarnego? bardzo dziękuję za Twoją pomoc.Jak dołączyć dane do pliku binarnego?

Odpowiedz

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 Podoba mi się ta odpowiedź, ponieważ pokazuje, jak dodatkowo przenieść natywne typy danych do strumienia jako reprezentacje binarne. –

+2

@jdk - co oczywiście sprawia, że ​​* wiele * domniemań o tym, czym są dane *; "bajt []" na pewno, to zawsze ma sens ... ale kodowanie dla innych może być * mile * out. –

+1

+1 dla pisarza binarnego, jeśli piszesz dane binarne, zawsze najlepiej jest użyć pisarza –

5

Powinieneś być w stanie to zrobić poprzez Stream:

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

Jeśli chodzi o względy - jeden główny byłoby: czy podstawowa obsługa formatu danych dołączy? Wiele nie, chyba że są to twoje własne surowe dane, tekst itp. Dobrze sformatowany dokument XML nie obsługuje na przykład append (bez uwzględnienia końcowego elementu końcowego). Nie będzie czegoś takiego jak dokument Word. Niektóre jednak. Więc; jest dane OK z tym ...

0

Korzystanie StreamWriter i odwoływania się DotNetPerls, upewnij się, aby dodać True logiczną do konstruktora StreamWriter, jeśli w lewo w przeciwnym razie puste, to będzie nadpisać jak zwykle:

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 

To rozwiązanie, którego tak naprawdę szukałem, gdy dotarłem tutaj z Google, chociaż nie był to plik binarny, mam nadzieję, że pomoże komuś innemu.

Powiązane problemy