2010-03-07 43 views
20

我有一个二进制文件,我想在文件的末尾添加一块数据,我怎么用C#和.net来实现这个功能?写入二进制文件的末尾时是否还有任何注意事项?非常感谢你的帮助。如何将数据附加到二进制文件?

回答

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我喜欢这个答案,因为它告诉你如何另外将原生数据类型作为二进制表示推入流中。 – 2010-03-07 23:56:06

+2

@jdk - 这当然会对基础数据*是什么进行推测*。一个'byte []'肯定,这总是有意义的......但其他人的编码可能是*英里*出。 – 2010-03-08 05:22:35

+1

对于二进制写入器+1,如果您正在编写二进制数据,最好使用写入器 – 2010-03-08 08:00:50

5

你应该通过Stream能够做到这一点:

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

至于注意事项 - 主要的一个是:没有底层数据格式支持追加?许多不这样做,除非它是您自己的原始数据或文本等。例如,格式良好的xml文档不支持追加(不考虑最终的终止元素)。也不会像一个Word文档。但是有些人会这样做。所以;是您的数据与该行...

0

使用StreamWriter和引用DotNetPerls,请务必将True布尔添加到StreamWriter构造,否则留空,它会覆盖和往常一样:

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 

这是当我从Google来到这里时实际上正在寻找的解决方案,虽然它不是二进制文件,但希望它能帮助其他人。

相关问题