C# BinaryWriter和StreamWriter一些区别

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可设置写入的字节顺序,以及是否提供字节顺序标记。

上一篇: 打开MDI窗体的泛型方法
下一篇: C# short转byte
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
最新日志:
评论: 0 | 引用: 0 | 查看次数: 6615
发表评论
登录后再发表评论!