对于2GB的大文件,将Stream转换为byte [] c#

时间:2017-05-02 11:31:14

标签: c# stream byte

尝试将Stream对象转换为byte []并使用以下方法:

public static byte[] ReadFully(System.IO.Stream input)
{
            byte[] buffer = new byte[16*1024];
            using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
            {
                int read;
                while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
                {
                    ms.Write(buffer, 0, read);
                }
                return ms.ToArray();
            }
}

然而输入参数"输入"是用于2 GB的大文件,因此代码不会进入while循环,因此不会将其转换为字节数组。

对于较小的文件,它可以正常工作

1 个答案:

答案 0 :(得分:1)

这就是Stream的用途。 你没有将整个内容加载到byte[],你从Stream读取一个小缓冲区并处理它,然后处理并读取下一个缓冲区。

如果你仍然需要使用字节[]:

您的应用似乎无法处理超过2^32 Bytes内存,这意味着 32位。 尝试将其更改为 64位(在项目属性中转到构建并禁用Prefer 32 bit