Så på noen blogginnlegg på nettet om å lagre Stream i en fil,Mange er feil。 (Jeg fant flere problemer: dårlig ytelse, unormalt når strømmen er for stor)
Etter å ha fått en strøm, hvordan lagrer du denne strømmen elegant til kode
Den mest elegante metoden bør være gjennom CopyTo eller CopyToAsync
her inputStream.Seek(0, SeekOrigin.Begin); Ikke nødvendigvis, bruk denne koden etter dine egne behov, for eksempel at du bare trenger å kopiere strømmen fra den tiende byten, osv
Å bruke den asynkrone tilnærmingen vil ta litt lengre tid for denne skrivingen, men det vil gi den totale ytelsen bedre og la CPU-en håndtere andre oppgaver
Merk at når du bruker CopyToAsync, husk å legge til 'wait', når du kjører denne koden, overlater du utførelsen til IO, de fleste IO-prosesser krever ikke CPU for å beregne, slik at den totale ytelsen kan bli bedre
Også, hvis iputStream kommer inn utenfra, anbefaler jeg ikke å slippe den inne på denne måten, hvorfor? Jeg brukte en god bekk, og den ble drept da jeg døde i en bedrift
Den andre metoden er å styre minnereplikasjonscachen selv, som vil ha en ekstra minnekopi
Denne metoden lar deg endre verdien av ny byte[1024], noe som gir deg kontroll over den kopierte cachen
De neste er noen metoder som ikke anbefales, men de er praktiske når man skriver
Metoden ovenfor kopierer minnet to ganger, og hvis inngangsressurslengden er 1G, vil den oppta 2G med ressurser
På samme måte som ovenfor er det å be om en stor cache, som vist i følgende kode
Når det gjelder effektivitet og kode-eleganse, er de faktisk dårligere enn CopyTo-metoden, og på grunn av strøm. Lengde som lengde bestemmer ikke cachen, så den er ikke like god som den andre metoden
Nedenfor er en supertreg metode, én byte ganger én byte skriving er veldig treg
Overført fra:Innloggingen med hyperkoblingen er synlig. (Slutt)
|