Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 38466|Odpowiedź: 0

[Napiwki] Jak zapisać strumień do pliku w C#/.NET

[Skopiuj link]
Opublikowano 2021-5-16 21:12:58 | | |
Przejrzałem kilka wpisów na blogu online o zapisywaniu Streama do pliku,Wiele z nich się myli。 (Zauważyłem kilka problemów: słaba wydajność, nieprawidłowości, gdy strumień jest zbyt duży)

Po zdobyciu strumienia, jak elegancko zapisać ten strumień w kodzie

Najbardziej elegancką metodą powinna być metoda CopyTo lub CopyToAsync


tutaj inputStream.Seek(0, SeekOrigin.Begin); Niekoniecznie, proszę używać tego kodu zgodnie ze swoimi potrzebami, np. wystarczy skopiować strumień z 10. bajtu itd

Użycie podejścia asynchronicznego zajmie trochę więcej czasu na ten zapis, ale zapewni to lepszą wydajność i pozwoli procesorowi obsłużyć inne zadania




Należy zauważyć, że podczas korzystania z CopyToAsync pamiętaj, aby dodać await; podczas wykonywania tego kodu przekazujesz wykonanie IO, większość procesów IO nie wymaga CPU do obliczeń, więc ogólna wydajność może być lepsza

Jeśli iputStream wchodzi z zewnątrz, to nie polecam wypuszczania go w tej metodzie, dlaczego? Korzystałem z dobrego strumienia i został zabity, gdy przechodziłem w firmie

Drugą metodą jest samodzielne sterowanie pamięcią podręczną replikacji, która będzie miała dodatkową kopię pamięci


Ta metoda pozwala na modyfikację wartości nowego bajtu[1024], dając kontrolę nad skopiowaną pamięcią podręczną

Kolejne metody to niezalecane, ale wygodne przy pisaniu


Powyższa metoda kopiuje pamięć dwukrotnie, a jeśli długość zasobu wejściowego wynosi 1G, zajmie ona 2G zasobów

Podobnie jak powyżej, można zażądać dużej pamięci podręcznej, jak pokazano w poniższym kodzie


Pod względem efektywności i elegancji kodu są one faktycznie gorsze od metody CopyTo i ze względu na przepływ. Długość jako długość nie determinuje pamięci podręcznej, więc nie jest tak dobra jak druga metoda

Poniżej znajduje się bardzo wolna metoda – zapis jeden bajt na bajt jest bardzo wolny


Przeniesiono z:Logowanie do linku jest widoczne.
(Koniec)




Poprzedni:Szczegółowe wyjaśnienie operacji NPOI Excel
Następny:X-Forwarded-Dla wielu adresów IP w nagłówku HTTP request
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com