刚刚发现一个比较奇怪的现象,从Stream复制数据到byte[]数组后,发现byte[]的数据都还是默认值,见代码:
/// <summary>
/// 从相册中完成获取图像
/// </summary>
private void OnPhotoChooserTaskComplete(object sender, PhotoResult e)
{
Stream ms = new MemoryStream();
e.ChosenPhoto.CopyTo(ms);
byte[] byteArray = new byte[ms.Length];
// 将ms的字节流复制到byteArray后,竟发现byteArray的数据都为0
ms.Read(byteArray, 0, byteArray.Length);
}
后来才醒悟,原来ms拿完数据后,还要从里面读数据就得设置ms.Position = 0;
即是在
e.ChosenPhoto.CopyTo(ms);
之后将ms的索引位置置为最开始值:ms.Position = 0;
本文详细解析了一个常见的编程错误:在使用Stream复制数据到byte[]数组后,数据默认值的问题。关键在于理解Stream读取数据后的索引位置需要被重置为起始位置。
309

被折叠的 条评论
为什么被折叠?



