Podíval jsem se na některé blogové příspěvky online o ukládání Streamu do souboru,Mnozí se mýlí。 (Našel jsem několik problémů: špatný výkon, abnormální, když je stream příliš velký)
Po získání streamu, jak elegantně uložit tento stream do kódu
Nejelegantnější metodou by měla být metoda CopyTo nebo CopyToAsync
zde inputStream.Seek(0, SeekOrigin.Begin); Nemusí to být nutné, prosím, používejte tento kód podle svých potřeb, například stačí zkopírovat stream z desátého bajtu atd
Použití asynchronního přístupu zabere tento zápis o něco déle, ale celkový výkon se zlepší a umožní CPU zvládat i jiné úkoly
Všimněte si, že při používání CopyToAsync nezapomeňte přidat await, při spuštění tohoto kódu předáte vykonávání na IO, většina IO zpracování nevyžaduje CPU, takže celkový výkon může být lepší
Také, pokud iputStream přichází zvenčí, nedoporučuji ho uvolňovat tímto způsobem, proč? Použil jsem dobrý potok a ten se mi zrušil, když jsem prošel v podniku
Druhou metodou je ovládat replikační cache sám, což bude mít další kopii paměti
Tato metoda vám umožňuje upravit hodnotu nového bajtu[1024], čímž získáte kontrolu nad zkopírovanou cache
Dalšími jsou některé metody, které se nedoporučují, ale jsou pohodlné při psaní
Výše uvedená metoda zkopíruje paměť dvakrát, a pokud je délka vstupního zdroje 1G, zabere 2G zdrojů
Podobně jako výše je potřeba požádat o velkou cache, jak je ukázáno v následujícím kódu
Co se týče efektivity a elegance kódu, jsou ve skutečnosti horší než metoda CopyTo, a to kvůli streamu. Délka jako délka neurčuje cache, takže není tak dobrá jako druhá metoda
Níže je velmi pomalá metoda, zápis jeden bajt po jednom bajtu je extrémně pomalý
Převedeno z:Přihlášení k hypertextovému odkazu je viditelné. (Konec)
|