問題タブ [datainputstream]

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 投票する
3 に答える
2790 参照

java - Java: InputStreams と OutputStreams が共有されている

またはを共有できますInputStreamOutputStream?

たとえば、私が最初に持っているとしましょう:

...incomingオブジェクト変数です。後で私は一時的に行います:

ストリームは具体的であり、ストリームからの読み取りは、どこから行われたかに関係なく、その入力を消費することを理解しています...しかし、上記を実行した後でも、両方incomingdataReader同時にアクセスできますか、または1 つのInputStreamオブジェクトに接続されているだけで、そのため、そのストリームがincoming失われます宣言したら入力しdataReaderますか?を閉じるとソケットも閉じることは理解していますが、これは控えますが、に「転送」した後、何らかの形でdataReader「回収」する必要があるかどうか疑問に思っています。私はしなければなりませんか:InputStreamincomingdataReader

この操作全体の後、もう一度?

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

java - Java を使用して、テキスト ファイル内の特定の行数を読み取る

データを含むテキスト ファイルがあります。ファイルにはすべての月の情報が含まれています。1 月の情報が 50 行を占めているとします。2 月が始まり、さらに 40 行を占有します。3 月などがあるより... ファイルの一部だけを読み取ることはできますか? 「X 行目から Y 行目まで読んでください」と言えますか? またはこれを達成するためのより良い方法はありますか?全ファイルではなく、1ヶ月分のデータのみを印刷したい。これが私のコードです

お時間をいただきありがとうございます。

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

android - 「su」を使用して実行時にコマンドを送信し、DataInputStream からすべての行を取得する方法

Xlocation で Android デバイスにあるものを特定できるようにする必要があるプログラムに取り組んでいます。「su ls Xlocation」を使用しています

ファイルの配列リストを取得したいのですが、最初の項目しか取得できません。次の行を取得するコマンドがありませんか? または、他に何かする必要がありますか。

以下は私が送信している私のコマンドです

以下はdoCommandの現在の方法です

現在見られるように、true または false のみを返します。ただし、デバッグで実行すると、出力の最初の項目しか取得できません。(出力 = "[first.apk")

新しいバージョンを編集。

現在、かなりの量の出力が得られていますが、チェックしたバイト[10000]のサイズ制限内の大きなアイテムがディレクトリにあるすべてではありません。

誰かがこれを改善して、うまくいく正確な答えを得たいと思っているなら、私はまだこの投稿をチェックしています.

ありがとう

0 投票する
3 に答える
2000 参照

java - IOException の場合にストリームを閉じる DataInputStream

すべての例で、誰もが次のようなコードを見つけることができます:

このコードがFileNotFound例外に遭遇したとき、inputStream開いていなかったので、閉じる必要はありません。

しかし、なぜIOExceptionその catch ブロックで mets が表示されないのですかinputStream.close()。この操作は、入力データの例外がスローされたときに自動的に実行されましたか? プログラムが入力に問題がある場合、これはストリームがすでに開いていることを意味するためです。

0 投票する
0 に答える
363 参照

android - ソケットを介して ByteArray を送受信中にアプリがクラッシュする

ソケット通信を使った簡単なチャットアプリを作ろうとしています。私の目標は、テキストと画像 (スマートフォン ギャラリーから) を正常に送受信することです。テキスト部分は成功しましたが、画像に問題があります。

dataInput/OutputStream を使用してコードを作成しました。以下は、bytearray を使用して画像転送用のソケット接続を確立するコードです (アプリはテキストと画像に異なるポートを使用します)。

while ループは、サーバーからの入力 bytearray を待機することです。ハンドラーは、デコードされた bytearray をディスプレイに表示します。

--> img_input.readFully(byte_input); この行が問題になると思います。ハンドラーが正常に動作することを確認しました。空の while ブロックを使用しても、アプリは停止しませんでした。

問題は何でしょうか?

サーバー側のコードを以下に示します。 (メッセージスレッドは省略)

0 投票する
3 に答える
1168 参照

java - System.inでのJavaDataInputStreamの使用

簡単なプログラム

やや奇妙な動作をします。入力されたテキストの出力を拒否します...端末を使用してテキストを入力しましたが、出力には何もありません。どうしたの?

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

java - Javaは16進数を逆にします

私はそのようなファイルを読み取ろうとしています:

今、私はそのような16進数を読みたいです:

必要な方へ: これが私のファイルの最初のバイトです

3412 aa55 0200 0000

問題は、私の出力0x3412aa550x55aa1234. これを修正するにはどうすればよいですか?

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

android - ローカルテキストファイルを1行ずつ文字列配列に読み込むことはできますか?

質問「ローカル(res / raw)ファイルを1行ずつ読み取る方法は?」同様の問題を扱っていますが、そこで提供された回答に基づいてソリューションベースを構築することができませんでした。私は非常に有用な情報(readLineメソッドを持つDataInputStreamクラス)を取得しました。これを開発者のWebサイトで調査し、機能させるように努めています。

私がやろうとしているのは、テキストファイルの連続する行に格納されている情報を文字列配列に読み込むことです。最初の行は最初の配列要素、2番目の行は次の配列要素などです。次にこの文字列配列は、次に開かれるアクティビティのテキストフィールドに入力するために使用されます。これはすべてスイッチケース内で発生します(ケースに応じて、つまりどのリストアイテムが選択されているかによって、異なるテキストファイルがロードされます)。これが私がこれまでに持っているものです:

これまでのところ、編集者はこれらのエラーを除いてそれで大丈夫です、そして私はそれらを理解するのに十分な経験がありません。私は彼らが言っていることを理解していますが、それらを修正する方法は理解していません。エラーは、入力ストリームを設定して値を割り当てようとしているスイッチケース内のセクションにあります。最も重要なことは、readLineコマンドが実行される行で、次のようになります。"-メソッドreadLineはタイプDataInputStreamに対して未定義です""-メソッドreadLineはタイプInputStreamに対して未定義です"

私が間違っていなければ、ここ(http://developer.android.com/reference/java/io/DataInputStream.html)にDataInputStreamクラスでreadLineメソッドが使用可能であると書かれているので(私はこれは上記の質問から)。明らかに、私はDataInputStreamを正しく使用していませんが、その方法を理解できないようです。私はここでいくつかの質問に目を通し、上記のリンク先のページを数回参照しました。

誰かが私が間違っていることを見ることができれば、私はあなたの助けを大いに感謝します。この種のタスクで間違ったツリーを完全に吠えている場合は、時間を無駄にしていることをお詫びしますが、いくつかのガイドラインまたは適切なチュートリアルリソースへの紹介をいただければ幸いです。私はこれらのエラーを理解するために過去2日間を費やしました。

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

c# - C# <-> Java ソケット通信

ソケットを介して Java アプリケーションと通信することになっている .NET アプリケーションを作成しています。.NET コードは次のとおりです。

問題は、Java アプリケーションが応答を送信しないことです。アプリケーションはサードパーティのソフトウェアであり、変更できませんが、逆コンパイラをダウンロードして、Java クラスで関連するコードを見つけました。

この場合の「is」は DataInputStream です。1. ソケットを作成し、メッセージを送信します 2. 応答を待ちますが、何も起こりません 3. アプリを手動で閉じます - ソケットが期限切れになります 4. 突然、メッセージ全体が Java アプリケーションのログに表示されます. これは、例外が発生し、実際に体に何かがあることを意味します。

エラーの可能性がある場所を教えていただけないでしょうか。this.is.readFully(body) 行はそこにあるべきではないと思いますが、よくわかりません。C# コードから EOF を手動で送信する必要があるかもしれませんが、その方法を見つけることができませんでした。

このコードのもう 1 つの小さな問題は、メッセージの最初の 2 文字が取り除かれていることです。そのため、実際のメッセージの前に 2 つのスペースを含めました。

前もって感謝します。

編集

だから私はいくつかのランダムなデータでソケットを埋めようとしましたが、最終的に答えを得ました:

ただし、送信するメッセージは正確でなければならないため、これは良い解決策ではありません。次に、関連データが送信された後にソケットを閉じようとしましたsoc.Disconnect(false);。これにより、Java アプリケーションのログが適切なデバッグ情報でいっぱいになります。EOL をソケットに送信して、Java アプリがリッスンを停止し、データの送信を開始する方法はありますか? ありがとうございました。

編集 2 サーバーに接続する Java クライアントを作成しようとしましたが、同じことが起こりました。

次に、接続しているJavaアプリと同じポートでリッスンするダミーサーバーを作成しました.Javaアプリと同じように動作し、動作していました。

今では、EOT または EOF コマンドをストリームに送信するしか方法がないと感じていますが、.NET でそれを行う方法がわかりませんし、インターネットでも答えを見つけることができませんでした。

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

java - ソケットを使用してデータを送信したクライアントを特定する

私は問題があります。

私のコードには、サーバーへの「イン」と「アウト」を持つすべてのプレーヤーの配列があります。

サーバーからクライアントへ私は問題なくうまく通信でき、すべてのクライアントはサーバーから送信された変更をGUIに表示します。

問題は、クライアントからサーバーへの通信です。サーバーとして、私はすべてのプレイヤーからいくつかの仕事をするための請願を受け取りたいと思っています。問題は、どのインデックスから請願書を受け取ったかわからplayers[index].in.readUTF()ず、プログラムをブロックするすべての原因を確認できないことです。

手助け?in.avaiable()私にはうまくいきません。

それをより明確に示すために:

プレイヤーがサーバーにログインするとき、私はサーバー側でこれを行います。

次に、サーバー側にメッセージを待機しているスレッドがあります。

問題は、どのプレーヤーの配列のインデックスから(どのプレーヤーから)メッセージが来るのかわからないことです。サーバーに何も送信していないプレーヤーのインデックスを確認できません。サーバーがプログラムをブロックするためです。

それがどのように機能するかです:

サーバーからクライアントへ私はただします:

  1. player[i].out.writeUTF(message)サーバー側から
  2. クライアントはそれを実行しin.readUTF()、すべてが正常に動作します

クライアントからサーバーへ私はします:

  1. out.writeUTF(message)クライアントから
  2. しかし、サーバー側では、player[i].in どのプレーヤーかわからないものを読み取るために1つを選択する必要があります。