Лучший способ прочитать большой файл в байтовый массив в C #? - PullRequest
358 голосов
/ 09 января 2010

У меня есть веб-сервер, который будет читать большие двоичные файлы (несколько мегабайт) в байтовые массивы. Сервер может считывать несколько файлов одновременно (разные запросы страниц), поэтому я ищу наиболее оптимизированный способ сделать это без чрезмерной нагрузки на процессор. Достаточно ли хорош приведенный ниже код?

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

Ответы [ 11 ]

0 голосов
/ 09 января 2010

Используйте класс BufferedStream в C # для повышения производительности. Буфер - это блок байтов в памяти, используемый для кэширования данных, что уменьшает количество обращений к операционной системе. Буферы улучшают производительность чтения и записи.

См. Ниже пример кода и дополнительное объяснение: http://msdn.microsoft.com/en-us/library/system.io.bufferedstream.aspx

...