この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 38466|答える: 0

[ヒント] C#/.NETでストリームをファイルに保存する方法

[リンクをコピー]
2021年5月16日 21:12:58に投稿 | | |
Streamをファイルに保存する方法についてオンラインでいくつかのブログ記事を見ました。多くは誤りです。 (いくつかの問題点が見つかった:パフォーマンスの低下、ストリームが大きすぎると異常なこと)

Streamを手に入れた後、このStreamを優雅にコードに保存する方法

最も洗練された方法は、CopyToまたはCopyToAsyncのメソッドを使うことです


ここにinputStream.Seek(0, SeekOrigin.Begin); 必ずしもそうとは限りません。例えば、10バイト目のストリームだけをコピーすればいいなど、ご自身のニーズに応じてこのコードをご利用ください

非同期方式を使うと書き込みに少し時間がかかりますが、全体的なパフォーマンスが向上し、CPUが他のタスクを処理できるようになります




CopyToAsyncを使う際は、waitを必ず追加してください。このコードを実行する際には、実行をIOに引き渡します。ほとんどのIO処理はCPUを必要としないため、全体的なパフォーマンスが向上します

また、もしiputStreamが外部から入ってくるなら、この方法で内部に放出するのはおすすめしません。なぜでしょうか? 良いストリームを使っていましたが、ビジネスで合格したときにそのストリームは廃れてしまいました

2つ目の方法は、メモリ複製キャッシュを自分で制御し、追加のメモリコピーを持つことです


この方法は、新しいバイト[1024]の値を変更できるようにし、コピーしたキャッシュをコントロールできるようにすることです

以下は推奨されない方法ですが、執筆時に便利です


上記の方法はメモリを2回コピーし、入力リソース長が1Gの場合、2Gのリソースを占有します

上記の方法と同様に、以下のコードに示されているように、大きなキャッシュを要求する方法があります


効率やコードの洗練度という点では、実際にはCopyToメソッドよりも劣っており、ストリームの問題も理由です。 長さと長さはキャッシュを決定しないため、後者の方法ほど優れていません

以下は非常に遅い方法で、1バイトずつの書き込みは非常に遅いです


転属先:ハイパーリンクのログインが見えます。
(終わり)




先の:NPOIオペレーション・エクセル詳細解説
次に:X-転送-HTTPリクエストヘッダー内の複数のIPアドレスに対して
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com