我的意图是将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)
,价值观完全不同。这是什么原因?
答案 0 :(得分:4)
这是因为StreamWriter
是TextWriter
并将字节转换为文本(字符串表示)。
使用BaseStream.Write(byte[] data, ...)
直接写入字节而不进行任何转换。
但是你正在使用交错的2种方法,我想一些覆盖也正在发生。请注意,您应该使用其中一个,而不是两个。