Jeg har set nogle blogindlæg online om at gemme Stream til en fil,Mange er forkerte。 (Jeg fandt flere problemer: dårlig ydeevne, unormalt når strømmen er for stor)
Efter at have fået en stream, hvordan gemmer man elegant denne stream til kode
Den mest elegante metode bør være gennem CopyTo eller CopyToAsync
her inputStream.Seek(0, SeekOrigin.Begin); Ikke nødvendigvis, brug venligst denne kode efter dine egne behov, såsom at du kun behøver at kopiere strømmen fra den 10. byte osv
At bruge den asynkrone tilgang vil tage lidt længere tid for denne skrivning, men det vil give den samlede ydeevne bedre og tillade CPU'en at håndtere andre opgaver
Bemærk, at når du bruger CopyToAsync, skal du huske at tilføje 'wait', når du eksekverer denne kode, overlader du eksekveringen til IO, de fleste IO-processer kræver ikke CPU for at beregne, så den samlede ydeevne kan være bedre
Hvis iputStream kommer ind udefra, anbefaler jeg heller ikke at frigive den inde i denne metode, hvorfor? Jeg brugte en god stream, og den blev ødelagt, da jeg gik forbi i en virksomhed
Den anden metode er selv at styre hukommelsesreplikationscachen, som vil have en ekstra hukommelseskopi
Denne metode tillader dig at ændre værdien af den nye byte[1024], hvilket giver dig kontrol over den kopierede cache
Følgende er nogle metoder, der ikke anbefales, men de er praktiske ved skrivning
Ovenstående metode kopierer hukommelsen to gange, og hvis inputressourcen er 1G, vil den optage 2G ressourcer
Ligesom ovenfor er det at anmode om en stor cache, som vist i følgende kode
Med hensyn til effektivitet og kode-elegance er de faktisk ringere end CopyTo-metoden, og på grund af stream. Længde som længde bestemmer ikke cachen, så den er ikke lige så god som den anden metode
Nedenfor er en super langsom metode, én byte gange én byte skrivning er super langsom
Overført fra:Hyperlink-login er synlig. (Slut)
|