Слишком долгое создание FileStream - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Мне необходимо отправлять по сети большие файлы (от 1.4гб до 5гб). Проблема заключается в слишком долгом создании FileStream для больших файлов...
using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
                            {
                                byte Resp = new byte[MAXBUFFER];
                                if (fileStream.Length > Resp.LongLength)
                                {
                                    long fullsize = fileStream.Length;
                                    do
                                    {
                                        fileStream.Read(Resp, 0, Resp.Length);
                                        await networkStream.WriteAsync(Resp, 0, Resp.Length);
 
                                        fullsize -= Resp.Length;
                                        if (fullsize <= Resp.Length)
                                        {
                                            fileStream.Read(Resp, 0, (int)fullsize);
                                            await networkStream.WriteAsync(Resp, 0, (int)fullsize);
                                            break;
                                        }
                                    }
                                    while (true);
                                }
                                else
                                {
                                    fileStream.Read(Resp, 0, (int)fileStream.Length);
                                    await networkStream.WriteAsync(Resp, 0, (int)fileStream.Length);
                                }
                                Resp = null;
                                fileStream.Dispose();
                            }
Подскажите, есть возможность сразу записывать байты файла в сетевой потом networkStream? (либо получать байты в буфер параллельно с созданием стрима)

Решение задачи: «Слишком долгое создание FileStream»

textual
Листинг программы
using (var fileStream = new FileStream(filename, FileMode.Open, FileAccess.Read))
{
   await fileStream.CopyToAsync(networkStream).ConfigureAwait(false);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.533 из 5