Megnéztem néhány blogbejegyzést az interneten, amelyek arról szólnak, hogy a Stream fájlba mentették,Sok helytelen。 (Több problémát is találtam: gyenge teljesítmény, szokatlan, ha túl nagy a stream)
Miután megszereztem egy streamet, hogyan lehet elegánsan elmenteni ezt a streamet kódra
A legelegánsabb módszer a CopyTo vagy CopyToAsync módszer kellene legyen.
itt inputStream.Seek(0, SeekOrigin.Begin); Nem feltétlenül, kérlek, használd ezt a kódot a saját igényeidnek megfelelően, például csak a 10. bájtról kell másolnod az áramlatot, stb
Az aszinkron megközelítés egy kicsit tovább tart az íráshoz, de jobb teljesítményt eredményez, és lehetővé teszi a CPU számára, hogy más feladatokat is elvégezzen
Fontos megjegyezni, hogy a CopyToAsync használatakor ne felejtsd el a várakozást hozzáadni, amikor ezt a kódot futtatod, átadod a végrehajtást az IO-nak, a legtöbb IO feldolgozáshoz nem szükséges CPU a számításhoz, így az összteljesítmény jobb lesz
Ha az iputStream kívülről érkezik, akkor nem ajánlom, hogy ebben a módszerben engedd ki, miért? Jó streamet használtam, de megszűnt, amikor egy üzletben elmentem
A második módszer, hogy magad irányítod a memóriareplikációs gyorsítótárt, amelyhez további memóriamásolat is lesz
Ez a módszer lehetővé teszi az új bájt[1024] értékének módosítását, így kontrollt adsz a másolt gyorsítótár felett
A következők néhány olyan módszer, amelyeket nem ajánlottak, de íráskor kényelmesek
A fenti módszer kétszer másolja a memóriát, és ha a bemeneti erőforrás hossza 1G, akkor 2G erőforrást foglal el
Hasonlóan a fentiekhez egy nagy gyorsítótár kérése, ahogy az alábbi kódban is látható
Hatékonyság és kód elegancia tekintetében valójában gyengébbek a CopyTo módszernél is, és a stream miatt. A hosszúság és a hossz nem határozza meg a gyorsítótárt, így nem olyan jó, mint a második módszer
Az alábbiakban egy nagyon lassú módszer található, egy bájtról egy bájtra írás nagyon lassú
Áthelyezve:A hiperlink bejelentkezés látható. (Vége)
|