我需要将图片和小视频文件(大约5MB,小于10MB)发送到我将要编写的REST服务中。我想知道在完成这个任务时,是应该使用Byte[]还是Stream。在使用Byte[]和Stream之间,在传输文件大小方面的分界线是什么?
你愿意为事务提交的可用内存量是唯一真正的限制。
如果你有一个5MB的文件,那么你需要将整个文件加载到内存中,这将消耗5MB的内存。
如果你使用流来处理,可以通过从文件中读取小块并将这些块写入HTTP流的可重复缓冲区中,使用更少的内存。
在选择字节数组或流时,通常的测试取决于你是否预先知道数据中有多少字节以及对于给定目的来说这个数字是否相对较小。
例如,如果你正在处理一个小图标文件(小于50KB)并且知道文件大小,则应该选择字节数组。
相反,如果你正在处理一个电影文件,在同一时间将2GB内容存储在内存中既困难又无必要时,应该使用流。
流最适合处理更大量的数据或者长度未在一开始就知道的数据。