c# - 在 C# 中,.NET 将大文件读入字节数组的最佳方法?

  显示原文与译文双语对照的内容
78 0

我有一个将大型二进制文件( 兆字节) 读入字节数组的web服务器。服务器可以同时读取几个文件,所以我在寻找最优化的方法,而不需要过多的( 不同的页面请求) 。下面的代码是否足够好?

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;
}
时间:原作者:0个回答

122 1

我可能会争辩说,这里的答案通常是“不要这么做“”。除非你完全需要所有的数据,考虑使用 Stream -based API ( 。或某些读取器/迭代器的变体) 。当您有多个并行操作(如问题所示)以最小化系统负载和最大化吞吐量时,这一点尤为重要。

例如, 如果要向调用方传输数据,请执行以下操作:

Stream dest =.. .
using(Stream source = File.OpenRead(path)) {
 byte[] buffer = new byte[2048];
 int bytesRead;
 while((bytesRead = source.Read(buffer, 0, buffer.Length))> 0) {
 dest.Write(buffer, 0, bytesRead);
 }
}
原作者:
...