c# convert system.IO.Stream to Byte[]
本问题已经有最佳答案,请猛点这里访问。
我想知道如何将流转换为字节。
我找到了这个代码,但在我的例子中它不起作用:
1 2 3 4 | var memoryStream = new MemoryStream(); paramFile.CopyTo(memoryStream); byte[] myBynary = memoryStream.ToArray(); myBinary = memoryStream.ToArray(); |
但是在我的例子中,在paramfile.copyto(memorystream)行中,它什么也没有发生,没有例外,应用程序仍然可以工作,但是代码不会继续执行下一行。
谢谢。
如果要读取文件,只需使用file.readallbytes方法:
1 | byte[] myBinary = File.ReadAllBytes(@"C:\MyDir\MyFile.bin"); |
此外,只要您的sourcestream支持length属性,就不需要复制到memorystream来获取字节数组:
1 2 |
这是我为流类编写的扩展方法
1 2 3 4 5 6 7 8 9 10 11 | public static class StreamExtensions { public static byte[] ToByteArray(this Stream stream) { stream.Position = 0; byte[] buffer = new byte[stream.Length]; for (int totalBytesCopied = 0; totalBytesCopied < stream.Length; ) totalBytesCopied += stream.Read(buffer, totalBytesCopied, Convert.ToInt32(stream.Length) - totalBytesCopied); return buffer; } } |