Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 38466|Atsakyti: 0

[Patarimai] Kaip išsaugoti srautą faile C#/.NET

[Kopijuoti nuorodą]
Paskelbta 2021-5-16 21:12:58 | | |
Pažvelgė į kai kuriuos dienoraščio pranešimus internete apie įrašymo srautą į failą,Daugelis yra neteisingi。 (Radau keletą problemų: prastas našumas, nenormalus, kai srautas yra per didelis)

Gavus srautą, kaip elegantiškai išsaugoti šį srautą į kodą

Elegantiškiausias metodas turėtų būti "CopyTo" arba "CopyToAsync" metodas


čia inputStream.Seek(0, SeekOrigin.Begin); Nebūtinai, naudokite šį kodą pagal savo poreikius, pvz., jums reikia nukopijuoti srautą tik iš 10-ojo baito ir pan

Naudojant asinchroninį metodą užtruks šiek tiek ilgiau, tačiau tai suteiks bendrą našumą geriau ir leis procesoriui atlikti kitas užduotis




Atminkite, kad naudodami "CopyToAsync" nepamirškite pridėti palaukti, vykdydami šį kodą, vykdymą perduosite IO, daugumai IO apdorojimo nereikia procesoriaus apskaičiuoti, todėl bendras našumas gali būti geresnis

Be to, jei iputStream ateina iš išorės, tada aš nerekomenduoju išleisti jį viduje šį metodą, kodėl? Aš naudojau gerą upelį ir jis buvo nužudytas, kai aš praėjo į verslą

Antrasis būdas yra patiems valdyti atminties replikacijos talpyklą, kuri turės papildomą atminties kopiją


Šis metodas leidžia modifikuoti naujo baito reikšmę[1024], suteikiant jums galimybę valdyti nukopijuotą talpyklą

Kiti yra keletas metodų, kurie nerekomenduojami, tačiau jie yra patogūs rašant


Aukščiau pateiktas metodas nukopijuos atmintį du kartus, o jei įvesties išteklių ilgis yra 1G, jis užims 2G išteklių

Panašiai kaip aukščiau, reikia prašyti didelės talpyklos, kaip parodyta šiame kode


Kalbant apie efektyvumą ir kodo eleganciją, jie iš tikrųjų yra prastesni už CopyTo metodą ir dėl srauto. Ilgis kaip ilgis nelemia talpyklos, todėl jis nėra toks geras kaip antrasis metodas

Žemiau yra labai lėtas metodas, vienas baitas po vieną baitą rašymas yra labai lėtas


Perkelta iš:Hipersaito prisijungimas matomas.
(Pabaiga)




Ankstesnis:NPOI operacija "Excel" išsamus paaiškinimas
Kitą:X-Forwarded-Keliems IP adresams HTTP užklausos antraštėje
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com