gpt4 book ai didi

c# - 为什么文件内容 C# 如此不同

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:50 25 4
gpt4 key购买 nike

我的意图是将 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),取值完全不同。这是什么原因?

最佳答案

这是因为 StreamWriter 是一个 TextWriter 并将字节转换为文本(字符串表示形式)。

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

但是你正在使用 2 种交错的方法,我猜也发生了一些覆盖。请注意,您应该使用其中之一,而不是同时使用两者。

关于c# - 为什么文件内容 C# 如此不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8818569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com