Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 38466|Odpověď: 0

[Tipy] Jak uložit stream do souboru v C#/.NET

[Kopírovat odkaz]
Zveřejněno 16. 5. 2021 21:12:58 | | |
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)




Předchozí:Podrobné vysvětlení operace NPOI Excel
Další:X-Forwarded-Pro více IP adres v hlavičce HTTP požadavku
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com