問題タブ [outputstream]
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.
java - Java-入力を外部C/C++アプリケーションに渡す
Javaを使用して外部アプリケーションに値を入力しようとしています。
Javaアプリケーションは次のようになります。
アプリケーションがwaitForメソッドでハングします。
外部アプリケーションは次のようになります。
ウェルカムバナーはprintfを使用して印刷され、入力はSetConsoleMode/ReadConsoleInputで取得されます。ReadConsoleInputは1文字を読み取り、それらは*文字でマスクされます。
ヘルプ
java - JNI インターフェースを介した出力ストリームの共有
JNI インターフェイスを介して C++ ライブラリを使用する Java アプリケーションを作成しています。C++ ライブラリは、タイプ のオブジェクトを作成します。これらのオブジェクトはFoo
、JNI を介して Java に適切に渡されます。
ライブラリに出力関数があるとします。
そして私は Java を持っていますOutputStream out
。Foo::print
出力が表示されるようにJavaから呼び出すにはどうすればよいout
ですか? JNIレイヤーでOutputStream
aを強制する方法はありますか? std::ostream
出力を JNI レイヤーのバッファーにキャプチャしてからコピーすることはできout
ますか?
java - ダウンロードしたバイナリ ファイルを Java でディスクに書き込む
Java関数を使用できるjavascriptファイル(.js)にアドオンを書き込むことができるソフトウェアがあります(これが一般的かどうかはわかりませんが、javascriptファイルでJava呼び出しを見たことはありません)
Web サーバーからバイナリ ファイルをダウンロードし、ハード ドライブに書き込む必要があります。次のコードを試しました:
結果のファイルは有効な gzip アーカイブではなくなります。大きな間違いをしてしまったら申し訳ありませんが、私はプログラマーではなく、Java もあまり知りません。
java - 異なるレートでのInputStreamからの複数の読み取り
オンラインコンテンツ(オーディオファイルなど)を読み込もうとしています。リモートファイルへの接続を開き(たとえば、を使用してnew URL().openStream()
)、リモートをオーディオプレーヤーに渡すと、ネットワークから徐々にInputStream
読み取られます。オーディオプレーヤーライブラリがそれ以上のデータを要求しない場合、ネットワークから何も読み取らず、ライブラリがさらにデータを要求すると、再度読み取ります。InputStream
私の問題は、最初のファイルのロードプロセスが終了したらすぐに、次のオンラインオーディオファイルのキャッシュを開始したいということです。通常のを使用するInputStream
と、オーディオの再生が完了すると読み取りが完了します。これは、ネットワーク帯域幅が許せばより速く読み取り、次のオーディオファイルをキャッシュするため、適切ではありません。私のオーディオファイルは3MBよりも小さいので、メモリに安全にキャッシュできます。1つのファイルのみをプリフェッチするので、メモリリークの問題はありません。
InputStream
同時読み取りも可能にするタイプのキャッシングはありますか?その後、スレッドを実行して、オーディオプレーヤーがデータを消費するよりも速くオーディオをキャッシュできます。
java - 入力ストリームを出力ストリームに接続する
似たようなスレッドをいくつか見ましたが、必要なものではありません。
サーバーは基本的にクライアント (クライアント A) から入力を受け取り、それをバイトごとに別のクライアント (クライアント B) に転送します。
クライアント A の入力ストリームをクライアント B の出力ストリームに接続したいのですが、可能ですか? それを行う方法は何ですか?
また、これらのクライアントは相互にメッセージを送信していますが、これは時間の影響を受けやすいため、バッファリングは機能しません。たとえば 500 のバッファーは必要なく、クライアントが 499 バイトを送信すると、サーバーはバッファーを満たす最後のバイトを受信していないため、500 バイトの転送を保留します。
現在、各メッセージを解析して長さを確認し、長さバイトを読み取ってから転送しています。これは非常に遅いため、バイトを読み取って何度も転送するよりも優れていると考えました (そしてテストしました)。また、前の段落で述べた理由から、バッファーやタイマーを使用したくなかったのです。バッファーがいっぱいではないという理由だけで、メッセージが通過するまで非常に長い時間待機することは望ましくありません。
これを行う良い方法は何ですか?
bytearray - Java プロジェクト モジュール - InputStream/OutputStream または .tmpFile/byte[] を使用
自分のアプリケーション モジュールで InputStream/OutputStream オブジェクトを渡していることに気付きました。
コンテンツをディスクに保存し 、さまざまなメソッド呼び出し間でリソースのようなものを渡す方が良いかどうか疑問に思っています。毎回ストリームを処理する代わりに
、バイト [] 配列を使用します。
これらの状況でのあなたのアプローチは何ですか?
ありがとう
編集:
ユーザーがアップロードしたファイルを受け取るコントローラーがあります。ファイルをレンダリングする機能を提供するユーティリティ モジュールがあります。
InputStream 内のファイルは、ユーザーによってアップロードされたものです。os は、応答に関連付けられたストリームです。生成されたファイルを .tmp ファイルに保存してファイル パスを返すユーティリティ メソッドを使用するか、byte[] などを使用して、コントローラーで outputStream を直接処理する方がよいかどうか疑問に思っています。
java - 応答出力ストリームコンテンツの長さ?
さまざまな方法で出力ストリームに書き込んでいます。閉じる前に、出力ストリームのコンテンツの長さを確認するにはどうすればよいですか?
java - InputStream からの読み取りをキャンセルする
現在、ObjecInputStream
から読み取るためにを使用していますが、次のSocket
単純なコードを使用するとすべて正常に動作します。
ここで、ストリームを閉じずに読み取りをキャンセルして、後で再度読み取ることができるようにしたいと考えています。出来ますか?
編集:プログラムフローをブロックしているという理由だけで、読み取りをキャンセルしたい。同じ情報を 2 回読む必要はありません。別のリクエストを送信してから(別の)レスポンスを読み取れるように、キャンセルしたいだけです。
java - 入力ストリームと出力ストリームとは? なぜ、いつ使用するのですか?
誰かが私に何InputStream
を説明しますかOutputStream
?
InputStream
との両方の使用例について混乱していますOutputStream
。
説明に合わせてコードのスニペットも含めることができれば、それは素晴らしいことです. ありがとう!
java - 複数の出力ストリーム オブジェクトがラップされている場合の Java 出力ストリームの動作
ファイル出力ストリームで圧縮、暗号化、およびチェックサムを行うコードがあります。以下はコードです-
ここでわかるように、暗号化、圧縮などのために「os」オブジェクトをラップしてから、wrapOStreamWithCheckSum、wrapOStreamWithCipher、および wrapOStreamWithCompress メソッドのそれぞれの内部で、別のオブジェクト (new を使用して作成) で「os」変数を再割り当てしています。これが万が一メモリリークにつながるのではないかと思っていましたか?作成された古い「os」オブジェクトは実際にどうなるのでしょうか? 言い換えると、「new」を使用して作成された 4 つのオブジェクトがありますが、同じ「os」変数に再割り当てされています。新しいオブジェクトの作成/機能自体が古いオブジェクトに内部的に依存しているため、理解するのが難しいと感じています。