Katsoin joitakin blogikirjoituksia netissä Streamin tallentamisesta tiedostoon,Monet ovat virheellisiä。 (Löysin useita ongelmia: huono suorituskyky, epänormaali kun virta on liian suuri)
Kun saat streamin, miten tallentaa tämä virta tyylikkäästi koodiin
Tyylikkäin menetelmä tulisi olla CopyTo- tai CopyToAsync-menetelmä
tässä inputStream.Seek(0, SeekOrigin.Begin); Ei välttämättä, käytä tätä koodia omien tarpeidesi mukaan, kuten sinun tarvitsee kopioida virta vain kymmenenneltä tavulta jne
Asynkronisen lähestymistavan käyttö vie hieman kauemmin tämän kirjoituksen osalta, mutta se parantaa suorituskykyä ja mahdollistaa suorittimen hoitaa muita tehtäviä
Huomaa, että kun käytät CopyToAsyncia, muista lisätä odotus, kun suoritat tämän koodin, suoritus siirretään IO:lle, suurin osa IO-prosessoinnista ei vaadi prosessoria laskentaan, joten suorituskyky paranee
Jos iputStream tulee ulkopuolelta, en suosittele vapauttamaan sitä tämän menetelmän sisällä, miksi? Käytin hyvää striimiä ja se sammui, kun kuolin liiketoiminnassa
Toinen tapa on hallita muistireplikaatiovälimuistia itse, jolloin siihen tulee lisämuistikopio
Tämän menetelmän avulla voit muuttaa uuden tavun[1024] arvoa, jolloin voit hallita kopioitua välimuistia
Seuraavat ovat joitakin menetelmiä, joita ei suositella, mutta jotka ovat käteviä kirjoittamiseen
Yllä oleva menetelmä kopioi muistin kahdesti, ja jos syöteresurssin pituus on 1G, se vie 2G resursseja
Samankaltainen kuin pyytää suurta välimuistia, kuten seuraavassa koodissa on esitetty
Tehokkuuden ja koodin eleganssin osalta ne ovat itse asiassa heikompimpia kuin CopyTo-menetelmä, ja myös virtauksen vuoksi. Pituus ja pituus eivät määrää välimuistia, joten se ei ole yhtä hyvä kuin toinen menetelmä
Alla on todella hidas menetelmä, yksi tavu kerrallaan kirjoittaminen on todella hidasta
Siirretty:Hyperlinkin kirjautuminen on näkyvissä. (Loppu)
|