Vi alguns posts de blog online sobre salvar o Stream em um arquivo,Muitos estão incorretos。 (Encontrei vários problemas: desempenho ruim, anormal quando o fluxo é muito grande)
Depois de conseguir uma Stream, como salvar essa Stream de forma elegante no código
O método mais elegante deve ser através do método CopyTo ou CopyToAsync
aqui inputStream.Seek(0, SeekOrigin.Begin); Não necessariamente, por favor, use esse código de acordo com suas próprias necessidades, como você só precisa copiar o fluxo do 10º byte, etc
Usar a abordagem assíncrona levará um pouco mais de tempo para essa escrita, mas dará um desempenho geral melhor e permitirá que a CPU cuide de outras tarefas
Note que, ao usar o CopyToAsync, lembre-se de adicionar await; ao executar esse código, você transferirá a execução para a IO; a maioria dos processamentos de IO não requer CPU para ser computada, para que o desempenho geral seja melhor
Além disso, se o iputStream vem de fora, não recomendo liberá-lo dentro desse método, por quê? Usei um bom riacho e ele foi cancelado quando passei em um negócio
O segundo método é controlar você mesmo o cache de replicação de memória, que terá uma cópia de memória adicional
O que esse método faz é permitir que você modifique o valor do novo byte[1024], dando controle sobre o cache copiado
A seguir, alguns métodos que não são recomendados, mas que são convenientes na hora de escrever
O método acima copiará a memória duas vezes e, se o comprimento do recurso de entrada for 1G, ele ocupará 2G de recursos
Semelhante ao acima é solicitar um grande cache, como mostrado no código a seguir
Em termos de eficiência e elegância do código, eles são na verdade inferiores ao método CopyTo, e por causa do fluxo. Comprimento como comprimento não determina o cache, então não é tão bom quanto o segundo método
Abaixo está um método super lento, um byte por byte escrever é muito lento
Transferido de:O login do hiperlink está visível. (Fim)
|