Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 38466|Răspunde: 0

[Bacșișuri] Cum să salvezi un flux într-un fișier în C#/.NET

[Copiază linkul]
Postat la 2021-5-16 21:12:58 | | |
Am citit câteva postări de blog online despre salvarea Stream într-un fișier,Multe sunt greșite。 (Am găsit mai multe probleme: performanță slabă, anormal când fluxul este prea mare)

După ce primești un stream, cum să salvezi elegant acest stream în cod

Cea mai elegantă metodă ar trebui să fie prin metoda CopyTo sau CopyToAsync


aici inputStream.Seek(0, SeekOrigin.Start); Nu neapărat, te rog să folosești acest cod în funcție de nevoile tale, cum ar fi să copiezi fluxul doar de pe octetul 10, etc

Folosirea abordării asincrone va dura puțin mai mult pentru această scriere, dar va oferi performanța generală mai bună și va permite procesorului să gestioneze alte sarcini




Rețineți că atunci când folosiți CopyToAsync, amintiți-vă să adăugați await; la executarea acestui cod, veți transfera execuția către IO, majoritatea procesărilor IO nu necesită CPU pentru a calcula, astfel încât performanța generală să fie mai bună

De asemenea, dacă iputStream-ul vine din exterior, atunci nu recomand să-l eliberezi în această metodă, de ce? Am folosit un pârâu bun și a fost omorât când am depășit într-o afacere

A doua metodă este să controlezi singur cache-ul de replicare a memoriei, care va avea o copie suplimentară de memorie


Ceea ce face această metodă este să îți permită să modifici valoarea noului octet[1024], oferindu-ți control asupra cache-ului copiat

Următoarele sunt câteva metode care nu sunt recomandate, dar care sunt convenabile când scrii


Metoda de mai sus va copia memoria de două ori, iar dacă lungimea resursei de intrare este 1G, va ocupa 2G de resurse

Similar cu cele de mai sus este solicitarea unui cache mare, așa cum este arătat în codul următor


Din punct de vedere al eficienței și eleganței codului, ele sunt de fapt inferioare metodei CopyTo și din cauza fluxului. Lungimea ca lungime nu determină cache-ul, deci nu este la fel de bună ca a doua metodă

Mai jos este o metodă foarte lentă, scrierea un octet cu octet este foarte lentă


Transferat din:Autentificarea cu hyperlink este vizibilă.
(Sfârșit)




Precedent:Explicație detaliată a Operațiunii Excel NPOI
Următor:X-Forwarded-Pentru mai multe adrese IP în antetul cererii HTTP
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com