Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 38466|Ответ: 0

[Чаевые] Как сохранить поток в файл на C#/.NET

[Скопировать ссылку]
Опубликовано 16.05.2021 21:12:58 | | |
Посмотрел несколько блог-постов в интернете о сохранении Stream в файл,Многие ошибочны。 (Я обнаружил несколько проблем: плохая производительность, ненормальные моменты, когда поток слишком большой)

После того как я получил Stream, как элегантно сохранить этот поток в код

Самый элегантный способ должен быть с помощью CopyTo или CopyToAsync


здесь inputStream.Seek(0, SeekOrigin.Begin); Не обязательно, пожалуйста, используйте этот код в соответствии с вашими потребностями, например, нужно скопировать поток только с 10-го байта и так далее

Использование асинхронного подхода займёт немного больше времени для такой записи, но это улучшит общую производительность и позволит процессору выполнять другие задачи




Обратите внимание, что при использовании CopyToAsync не забывайте добавлять await, при выполнении этого кода вы передаёте выполнение в IO, большинство процессов ввода не требует вычислений процессором, что повышает общую производительность

Также, если iputStream поступает снаружи, то я не рекомендую выпускать его таким способом, почему? Я пользовался хорошим стримом, и он был убит, когда я прошёл мимо в бизнесе

Второй способ — самостоятельно управлять кэшем репликации памяти, который будет иметь дополнительную копию памяти


Этот метод позволяет изменить значение нового байта[1024], давая контроль над скопированным кэшем

Далее — некоторые методы, которые не рекомендуются, но они удобны при написании


Вышеуказанный метод скопирует память дважды, и если длина входного ресурса равна 1G, он займёт 2G ресурсов

Аналогично вышеуказанному — запрос большого кэша, как показано в следующем коде


По эффективности и элегантности кода они на самом деле уступают методу CopyTo и из-за потока. Длина как длина не определяет кэш, поэтому он хуже второго метода

Ниже приведён очень медленный метод: запись в один байт на байт очень медленная


Переведён из:Вход по гиперссылке виден.
(Конец)




Предыдущий:Подробное объяснение операции NPOI Excel
Следующий:X-Forwarded-Для нескольких IP-адресов в заголовке HTTP-запроса
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com