問題タブ [memorystream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
8704 参照

.net - How do I send a PDF in a MemoryStream to the printer in .Net?

I have a PDF created in memory using iTextSharp and contained in a MemoryStream. I now need to translate that MemoryStream PDF into something the printer understands.

I've used Report Server in the past to render the pages to the printer format but I cant use it for this project.

Is there a native .Net way of doing this? For example, GhostScript would be OK if it was a .Net assembly but I don't want to bundle any non .Net stuff along with my installer.

The PrintDocument class in .Net is great for sending content to the printer but I still need to translate it from a PDF stream into GDI at the page level.

Any good hints?

Thanks in advance

Ryan

0 投票する
2 に答える
8461 参照

c# - C# から Java: Base64String、MemoryStream、GZipStream

.NET で gzip された Base64 文字列があり、それを Java の文字列に変換したいと考えています。特に、C# 構文に相当する Java を探しています。

  • Convert.FromBase64String
  • メモリーストリーム
  • GZipStream

変換したいメソッドは次のとおりです。

任意のポインタをいただければ幸いです。

0 投票する
4 に答える
2960 参照

c# - C#のメモリストリームから読み取るための注意事項

私は最近、このWebページhttp://www.yoda.arachsys.com/csharp/readbinary.htmlに出くわし、ファイルストリームから読み取るときに取るべき注意事項を説明しています。その要点は、次のコードが常に機能するとは限らないということです。

Readの3番目の引数は読み取られる最大バイト数であるため、これは危険です。Readの戻り値を使用して、実際に読み取られた量を確認する必要があります。

私の質問は、メモリストリームから読み取るときに同じ予防策を講じる必要があり、どのような状況ですべてのバイトが読み取られる前に読み取りが返される可能性があるかということです。

0 投票する
2 に答える
204 参照

encryption - SevenZip、多くの末尾の 0

私の配列は140バイトです。outArray は 512bytes です...私が欲しかったものではありません。また、適切に暗号化されているかどうかもわかりません。以下のコードは正しいですか?outArray が実際のサイズであり、多くの後続ゼロで固定されないようにするにはどうすればよいですか?

0 投票する
5 に答える
5291 参照

c# - ファイルストリームのようにブロックするメモリ内ストリームはありますか

このインターフェイスを実装するオブジェクトを提供する必要があるライブラリを使用しています。

次に、オブジェクトのリーダーは、ライブラリによって次のように使用されます。

通常、IConsoleを実装するクラスには、外部プロセスからのStandardOutputストリームがあります。その場合、console.StandardOutput.Read呼び出しは、StandardOutputストリームに書き込まれるデータが得られるまでブロックすることで機能します。

私がやろうとしているのは、MemoryStreamsを使用するテストIConsole実装を作成し、StandardInputに表示されるものをStandardInputにエコーバックすることです。私は試した:

しかし、それに関する問題は、いくつかのデータが得られるまで、console.StandardOutput.Readがブロックではなく0を返すことです。とにかく、利用可能なデータがない場合にMemoryStreamをブロックすることができますか、または使用できるメモリストリームに別のものがありますか?

0 投票する
1 に答える
2814 参照

c# - メモリ ストリームからのデータの削除

.Net MemoryStream クラスの使用法を理解しようとしています。ストリームがビジーであるため、一時的な動的な長さのバイナリ データを格納する必要があります。そのため、メモリ ストリームを割り当て、そのデータを一時的に書き込みます。ストリームが解放されると、メモリストリームからすべてのデータを読み取り、データを書き込みます。これを行うには、位置ポインターを 0 に設定します。

つまり、mDataBuffer.Position=0;

ただし、メモリストリームクラスは、読み取り後にデータを破棄しないようです。次回は以前と同じデータを取得します。私がこのサンプルプログラムを書いたことを確認するために

驚いたことに、(1,4) の出力を期待していましたが、出力は (1,1) でした。

私はこのメモリストリームの動作に本当に困惑しています。誰でも光を当てることができますか?また、これが通常の動作である場合、ストリームから過去のデータを削除するにはどうすればよいですか。

前もってありがとう、vaibhav

0 投票する
4 に答える
3996 参照

c# - System.IO.MemoryStream が大きいと、アプリケーションのメモリ使用量が劇的に増加しますか?

ユーザーが URL からファイルをダウンロードできるようにするライブラリを構築しています。私が検討しているオプションの 1 つは、ユーザーがファイルの予想される MD5 チェックサムを指定できるようにすることです。ライブラリの GetFile(string url) 関数は、ダウンロードされたストリームのチェックサムがユーザーによって指定されたものと一致することを保証します。

HttpWebResponse.GetResponseStream() によって返される NetworkStream がシーク可能ではないことに注意して、この質問への回答のおかげでストリームを複製する方法を見つけました: How can I read an Http response stream once in C#? . 先に進む前に、この重複がメモリにどのような影響を与えるかを理解したいと思いました。残念ながら、Google と MSDN で何度も検索しても無駄になりました。

ライブラリは、ダウンロードするファイルのサイズに制限を課しません。私の質問は、ユーザーが 2 GB のファイルを選択した場合、.NET 2.0 の MemoryStream 実装は、VM クランチのためにシステムがクロールを開始しないほど十分に効率的に PageFile と RAM を使用するのに十分スマートですか? また、別の質問に対する Jon Skeet のコメントは、私に考えさせてくれました。彼は、MemoryStream を破棄した後でも、メモリが 100% 解放されていないことを断言しました。メモリが実際に解放されることをいつどのように確認できますか? システムの要件 (および必要性) に基づいてリリースされますか?

ありがとう、マノジ

0 投票する
2 に答える
5434 参照

c# - C# .NET でのメモリ ストリーム内のテキストの検索と置換

Word ドキュメントでメモリストリームを読み込んでいます。メモリストリーム内の特定のテキストを変更して、検索や置換機能のように Word ドキュメントに保存できるようにしたいと考えています。Word Interop ライブラリを使用したくないので、誰か助けてください。ドキュメントを読み込んで保存するためのコードは既にあります。以下を参照してください。問題は、メモリ文字列を文字列に変換して文字列置換メソッドを使用すると、文字列を保存すると、Word 文書内のすべての書式が失われ、文書を開くと、あちこちに黒いボックスが表示されることです。


インターネット上のサンプルコードからコードをコピーしました。そのため、方法がわからなかったので、メモリストリームが使用されました。私の問題は、私が働いている会社が相互運用という言葉を使用したくないということです。なぜなら、単語がコード化された機能の実行を妨げるポップアップダイアログボックスを時々表示できることがわかったからです。これが、差し込み印刷機能をプログラムで実現する方法を検討したい理由です。私は何年も前にここでやりたいことと非常によく似たことをしましたが、C# ではなく Delphi で、通常はコードを失いました。誰かがこれに光を当てることができれば、私は感謝します.

0 投票する
1 に答える
923 参照

c# - C# UDP デコード データグラムがランダムに失敗する

マルチスレッド アプリケーションで問題が発生しており、過去 3 日間デバッグしてきましたが、問題を解決できません。これを書いているのは、これを入力するときに DUH の瞬間があるか、誰かが私が提供するコード スニペットに明らかな何かを見つけてくれることを願ってです。何が起こっているかは次のとおりです。

私は新しい UDP ネットワーク ライブラリに取り組んでおり、UDP データグラムを複数の受信アプリケーションにマルチキャストするデータ プロデューサーを持っています。送信者は、別々の UDP マルチキャスト アドレスと別々のポートにバインドされた 2 つの異なるソケットで送信します。受信側アプリケーションも 2 つのソケットを作成し、それぞれを送信側のマルチキャスト アドレス/ポートの 1 つにバインドします。

レシーバーがデータグラムを受信すると、それを MemoryStream のバッファーからコピーし、それをスレッド セーフ キューに入れます。別のスレッドがそれを読み取り、MemoryStream からデータをデコードします。

どちらのソケットにも独自のキューがあります。

今起こっていることは本当に奇妙です。それはランダムに発生し、再現性がなく、複数の受信アプリケーションを実行すると、時々ランダムに発生するのはそのうちの 1 つだけです。

基本的に、MemoryStream をキューから読み取るスレッドは、ReadInt32() などの BinaryReader を介して読み取り、それによってデータをデコードします。ただし、時々、データを読み取るときに、読み取ったデータが正しくありません。たとえば、送信者が決してエンコードしない負の整数です。

ただし、前述のように、受信アプリケーションの 1 つでのみデコードが失敗し、他のアプリケーションではデータグラムが正常にデコードされます。おそらくUDPデータグラムにバイト破損か何かがあると言うかもしれませんが、入ってくるすべてのデータグラムをログに記録し、すべての受信者でそれらを比較したところ、すべてのアプリケーションが受信したデータグラムは完全に同一です. デコードに失敗したデータグラムをディスクにダンプし、それを読み取ってデコーダーを実行する単体テストを作成すると、問題なくデコードされます。また、デコーダーの周りに try/catch をラップし、キャッチ内の MemoryStream の位置をリセットして、デコーダーを再度実行すると、正常にデコードされます。さらに奇妙なことに、これは両方のソケットをバインドして送信者からデータを読み取るときにのみ発生します。

何が起こっているのかに対応するコードを次に示します。

これは、ソケットの受信コールバックです。

データをデコードするスタブ コードを次に示します。

catch{} の部分で、MemoryStream.Position を 0 にリセットして同じメソッドを再度呼び出すだけで、次回は問題なく動作することがわかりますか? この時点で私は本当にアイデアがありません。残念ながら、これを書いているDUHの瞬間はありませんでした。何が起こっているのか、またはこれをトラブルシューティングするために他に何ができるのか、誰にも何か考えがありますか?

ありがとう、

トム

0 投票する
4 に答える
1576 参照

c# - この MemoryStream コードを単純化する方法

このコードは、バイト配列から読み込まれた画像のサムネイルを返します。筆者がなぜ 4 つのメモリ ストリームを使用しているのか、また、これを簡単に書き換える方法があるのか​​、それともそのままでよいのかを理解しようとしています。