木子屋 Dnawo's BLOG

C# BinaryWriter和StreamWriter一些区别

👤 dnawo 📅 2009-08-10 👁 7278 👍 0 💬 0 🔄 本站原创
1.BinaryWriter生成的文件没有BOM,StreamWriter生成的文件有BOM

using (FileStream fs = File.Create(@"c:\222.txt"))
{
    using (BinaryWriter bw = new BinaryWriter(fs, Encoding.Unicode))
    {
        bw.Write('文');
    }
}
//结果:87 65

using (FileStream fs = File.Create(@"c:\111.txt"))
{
    using (StreamWriter sw = new StreamWriter(fs, Encoding.Unicode))
    {
        sw.Write('文');
    }
}
//结果:FF FE 87 65

2.BinaryWriter可以直接写入2字节有符号整数,StreamWriter不支持

using (FileStream fs = File.Create(@"c:\333.txt"))
{
    using (BinaryWriter bw = new BinaryWriter(fs, Encoding.Unicode))
    {
        bw.Write((short)'文');
    }
}
//结果:87 65

3.BinaryWriter不支持设置字节顺序,StreamWriter 支持设置字节顺序

using (FileStream fs = File.Create(@"c:\444.txt"))
{
    using (BinaryWriter bw = new BinaryWriter(fs, new UnicodeEncoding(true, true)))
    {
        bw.Write((short)'文');
    }
}
//结果:87 65

using (FileStream fs = File.Create(@"c:\555.txt"))
{
    using (StreamWriter sw = new StreamWriter(fs, new UnicodeEncoding(true, true)))
    {
        sw.Write('文');
    }
}
//结果:FE FF 65 87


从测试结果可知BinaryWriter都是按little-endian字节顺序写入的,并且不提供字节顺序标记(BOM);StreamWriter可设置写入的字节顺序,以及是否提供字节顺序标记。

评论(0)

暂无评论。

计算题
评论需审核通过后显示
← 上一篇 打开MDI窗体的泛型方法 下一篇 → C# short转byte