【发布时间】:2011-01-03 02:28:48
【问题描述】:
我有一个网络服务器,它将大型二进制文件(几兆字节)读入字节数组。服务器可能同时读取多个文件(不同的页面请求),因此我正在寻找最优化的方法来执行此操作,而不会过多地占用 CPU。下面的代码够好吗?
public byte[] FileToByteArray(string fileName)
{
byte[] buff = null;
FileStream fs = new FileStream(fileName,
FileMode.Open,
FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
long numBytes = new FileInfo(fileName).Length;
buff = br.ReadBytes((int) numBytes);
return buff;
}
【问题讨论】:
-
你的例子可以简写为
byte[] buff = File.ReadAllBytes(fileName)。 -
为什么它是第三方网络服务意味着文件在发送到网络服务之前需要完全在 RAM 中,而不是流式传输?网络服务不会知道其中的区别。
-
@Brian,有些客户端不知道如何处理 .NET 流,例如 Java。在这种情况下,所有可以做的就是读取字节数组中的整个文件。
-
@sjeffrey:我说数据应该是流式传输的,而不是作为 .NET 流传输的。无论哪种方式,客户都不会知道其中的区别。
标签: c# .net bytearray binary-data