Tôi có một máy chủ web sẽ đọc các tệp nhị phân lớn (vài megabyte) vào các mảng byte. Các máy chủ có thể được đọc một số tập tin cùng một lúc (yêu cầu trang khác nhau), vì vậy tôi đang tìm cách tối ưu nhất để làm điều này mà không cần đánh thuế CPU quá nhiều. Mã dưới đây có đủ tốt không?Cách tốt nhất để đọc một tệp lớn thành một mảng byte trong C#?
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;
}
Ví dụ của bạn có thể được viết tắt thành 'byte [] buff = File.ReadAllBytes (tên tệp)'. –
Tại sao dịch vụ web của bên thứ ba ngụ ý rằng tệp cần phải đầy đủ trong RAM trước khi được gửi tới webservice, thay vì được phát trực tuyến? Webservice sẽ không biết sự khác biệt. – Brian
@Brian, Một số khách hàng không biết cách xử lý một luồng .NET như Java chẳng hạn. Khi đây là trường hợp tất cả những gì có thể được thực hiện là đọc toàn bộ tập tin trong mảng byte. – sjeffrey