Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 38466|Respuesta: 0

[Consejos] Cómo guardar un flujo en un archivo en C#/.NET

[Copiar enlace]
Publicado el 16-05-2021 21:12:58 | | |
He visto algunas entradas de blog en línea sobre cómo guardar Stream en un archivo,Muchos son incorrectos。 (Encontré varios problemas: bajo rendimiento, anormal cuando el flujo es demasiado grande)

Después de recibir una retransmisión, cómo guardar elegantemente esta transmisión en código

El método más elegante debería ser mediante CopyTo o CopyToAsync


aquí inputStream.Seek(0, SeekOrigin.Begin); No necesariamente, por favor usa este código según tus necesidades, como que solo necesitas copiar el flujo desde el décimo byte, etc

Usar el enfoque asincrónico llevará un poco más de tiempo en esta escritura, pero mejorará el rendimiento general y permitirá que la CPU gestione otras tareas




Ten en cuenta que al usar CopyToAsync, recuerda añadir await; al ejecutar este código, pasarás la ejecución a IO; la mayoría del procesamiento de IO no requiere CPU para calcular, para que el rendimiento general sea mejor

Además, si el iputStream viene de fuera, entonces no recomiendo liberarlo dentro de este método, ¿por qué? Usé un buen arroyo y se deshizo cuando pasé por delante en un negocio

El segundo método es controlar tú mismo la caché de replicación de memoria, que tendrá una copia de memoria adicional


Lo que hace este método es permitir modificar el valor de un nuevo byte[1024], dándote control sobre la caché copiada

A continuación, algunos métodos que no se recomiendan, pero que son cómodos al escribir


El método anterior copiará la memoria dos veces, y si la longitud del recurso de entrada es 1G, ocupará 2G de recursos

Similar a lo anterior es solicitar una caché grande, como se muestra en el siguiente código


En términos de eficiencia y elegancia del código, en realidad son inferiores al método CopyTo, y por el flujo de datos. La longitud como longitud no determina la caché, por lo que no es tan buena como el segundo método

A continuación hay un método muy lento, escribir byte a byte es muy lento


Transferido desde:El inicio de sesión del hipervínculo es visible.
(Fin)




Anterior:Explicación detallada de la operación de Excel NPOI
Próximo:X-Reenviado-Para múltiples direcciones IP en la cabecera de solicitud HTTP
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com