的背景:
我有以下 WriteFileToStream 函数,旨在完成一项简单的工作:从文件中获取数据并将其复制到 Stream。
我最初使用的是 Stream.CopyTo(Stream) 方法。然而,经过长时间的调试过程,我发现这是在我的处理管道中进一步出现“损坏数据”错误的原因。
概要:
使用 Stream.CopyTo(Stream) 方法会产生 65536 字节的数据,并且流无法正确处理。
使用 Stream.Write(...) 方法产生 45450 字节的数据并且流处理正确。
问题:
谁能明白为什么 CopyTo 的以下用法可能导致将无关数据写入流?
请注意:WriteFileToStream 中的最终代码取自对以下问题的回答:Save and load MemoryStream to/from a file
public static void WriteFileToStream(string fileName, Stream outputStream)
{
FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read);
long fileLength = file.Length;
byte[] bytes = new byte[fileLength];
file.Read(bytes, 0, (int)fileLength);
outputStream.Write(bytes, 0, (int)fileLength);
file.Close();
outputStream.Close();
// This was corrupting the data - adding superflous bytes to the result...somehow.
//using (FileStream file = File.OpenRead(fileName))
//{
// //
// file.CopyTo(outputStream);
//}
}