为什么文件内容C#有这样的差异

本文关键字:文件 为什么 | 更新日期: 2023-09-27 18:20:04

我的意图是将byte[]写入文件。代码片段如下:

byte[] stream = { 10, 20, 30, 40, 60 };
for (int i = 0; i < 2; i++)
{
    FileStream aCmdFileStream = new FileStream(@"c:'binarydata.txt", FileMode.Append, FileAccess.Write, FileShare.None);
    StreamWriter aStreamWriter = new StreamWriter(aCmdFileStream);
    for (int ii = 0; ii < stream.Length; ii++)
    {
        aStreamWriter.Write(stream[ii]);
        aStreamWriter.WriteLine(); 
        aStreamWriter.BaseStream.Write(stream,0,stream.Length);
    }
    aStreamWriter.Close();
}

此代码段的输出

(<
(<
(<
(<
(<10
20
30
40
60
(<
(<
(<
(<
(<10
20
30
40
60

当使用StreamWriter.Write()时,它会转储存储在数组中的值。但是StreamWriter.BaseStream.Write(byte[],int offset, int length)的值完全不同。这是什么原因?

为什么文件内容C#有这样的差异

这是因为StreamWriterTextWriter,并将字节转换为Text(字符串表示)。

并且使用BaseStream.Write(byte[] data, ...)直接写入字节而不进行任何转换。

但您使用的是交错的两种方法,我想也会发生一些重写。请注意,您应该使用其中一个,而不是同时使用两者。