Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 38466|Отговор: 0

[Бакшиши] Как да запазим поток във файл на C#/.NET

[Копирай линк]
Публикувано на 2021-5-16 21:12:58 | | |
Разгледах някои блог публикации онлайн за запазване на Stream във файл,Много от тях са грешни。 (Открих няколко проблема: слаба производителност, необичайни при стриймът е твърде голям)

След като си взема Stream, как елегантно да запазя този поток в код

Най-елегантният метод трябва да бъде чрез методите CopyTo или CopyToAsync


тук inputStream.Seek(0, SeekOrigin.Begin); Не е задължително, моля, използвайте този код според собствените си нужди, например да копирате потока само от 10-ия байт и т.н

Използването на асинхронен подход ще отнеме малко повече време за този запис, но ще даде по-добра цялостна производителност и ще позволи на процесора да се справя с други задачи




Имайте предвид, че при използване на CopyToAsync, не забравяйте да добавите await, при изпълнение на този код ще предадете изпълнението на IO, повечето IO обработка не изисква CPU за изчисления, така че цялостната производителност може да бъде по-добра

Също така, ако iputStream идва отвън, не препоръчвам да го пускаш по този начин, защо? Използвах добър поток и той беше убит, когато минах в бизнес

Вторият метод е да контролирате кеша за репликация на паметта сами, който ще има допълнително копие на паметта


Този метод ви позволява да променяте стойността на новия байт[1024], което ви дава контрол върху копирания кеш

Следващите са някои методи, които не се препоръчват, но са удобни при писане


Горният метод ще копира паметта два пъти, а ако дължината на входния ресурс е 1G, ще заема 2G ресурси

Подобно на горното е да се поиска голям кеш, както е показано в следващия код


По отношение на ефективността и елегантността на кода, те всъщност са по-слаби от метода CopyTo и заради потока. Дължината като дължина не определя кеша, така че не е толкова добър, колкото вторият метод

По-долу е много бавен метод – записването на един байт на един байт е много бавно


Прехвърлен от:Входът към хиперлинк е видим.
(Край)




Предишен:Подробно обяснение на операция NPOI Excel
Следващ:X-Forwarded-За множество IP адреси в заглавието на HTTP заявката
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com