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;


}



时间: 原作者:

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);


 }


}



原作者:
...