2010-03-07 43 views
20

Tôi có một tệp nhị phân mà tôi muốn nối thêm một đoạn dữ liệu ở cuối tệp, làm thế nào tôi có thể đạt được điều này bằng cách sử dụng C# và .net? cũng có bất kỳ cân nhắc nào cần thực hiện khi ghi vào cuối tệp nhị phân không? cảm ơn sự giúp đỡ của bạn.Cách nối dữ liệu vào tệp nhị phân?

Trả lời

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 Tôi thích câu trả lời này vì nó cho bạn biết cách thêm các loại dữ liệu gốc vào luồng dưới dạng biểu diễn nhị phân. –

+2

@jdk - mà tất nhiên tạo một * nhiều * giả định về dữ liệu cơ bản * là *; a 'byte []' chắc chắn, đó sẽ luôn luôn có ý nghĩa ... nhưng mã hóa cho những người khác có thể là * dặm * ra. –

+1

+1 cho nhà văn nhị phân, nếu bạn đang viết dữ liệu nhị phân, cách tốt nhất là sử dụng nhà văn –

5

Bạn sẽ có thể thực hiện điều này thông qua Stream:

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

Đối với cân nhắc - một trong những chính sẽ là: không hỗ trợ định dạng dữ liệu cơ bản thêm? Nhiều người không, trừ khi nó là dữ liệu thô của riêng bạn, hoặc văn bản vv. Một tài liệu xml được hình thành tốt không hỗ trợ chắp thêm (mà không xem xét yếu tố cuối cùng cuối cùng), ví dụ. Cũng sẽ không giống như một tài liệu Word. Tuy nhiên, một số thì có. Vì thế; là dữ liệu của bạn OK với điều này ...

0

Sử dụng StreamWriter và tham khảo DotNetPerls, hãy chắc chắn để thêm True boolean để các nhà xây dựng StreamWriter, nếu khác để trống, nó sẽ ghi đè lên như thường lệ:

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 

Đây là giải pháp mà tôi đã thực sự tìm kiếm khi tôi đến đây từ Google, mặc dù nó không phải là một tập tin nhị phân mặc dù, hy vọng nó sẽ giúp người khác.

Các vấn đề liên quan