問題タブ [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.
java - Java: InputStreams と OutputStreams が共有されている
またはを共有できますInputStream
かOutputStream
?
たとえば、私が最初に持っているとしましょう:
...incoming
オブジェクト変数です。後で私は一時的に行います:
ストリームは具体的であり、ストリームからの読み取りは、どこから行われたかに関係なく、その入力を消費することを理解しています...しかし、上記を実行した後でも、両方incoming
にdataReader
同時にアクセスできますか、または1 つのInputStream
オブジェクトに接続されているだけで、そのため、そのストリームがincoming
失われます宣言したら入力しdataReader
ますか?を閉じるとソケットも閉じることは理解していますが、これは控えますが、に「転送」した後、何らかの形でdataReader
「回収」する必要があるかどうか疑問に思っています。私はしなければなりませんか:InputStream
incoming
dataReader
この操作全体の後、もう一度?
java - Java を使用して、テキスト ファイル内の特定の行数を読み取る
データを含むテキスト ファイルがあります。ファイルにはすべての月の情報が含まれています。1 月の情報が 50 行を占めているとします。2 月が始まり、さらに 40 行を占有します。3 月などがあるより... ファイルの一部だけを読み取ることはできますか? 「X 行目から Y 行目まで読んでください」と言えますか? またはこれを達成するためのより良い方法はありますか?全ファイルではなく、1ヶ月分のデータのみを印刷したい。これが私のコードです
お時間をいただきありがとうございます。
android - 「su」を使用して実行時にコマンドを送信し、DataInputStream からすべての行を取得する方法
Xlocation で Android デバイスにあるものを特定できるようにする必要があるプログラムに取り組んでいます。「su ls Xlocation」を使用しています
ファイルの配列リストを取得したいのですが、最初の項目しか取得できません。次の行を取得するコマンドがありませんか? または、他に何かする必要がありますか。
以下は私が送信している私のコマンドです
以下はdoCommandの現在の方法です
現在見られるように、true または false のみを返します。ただし、デバッグで実行すると、出力の最初の項目しか取得できません。(出力 = "[first.apk")
新しいバージョンを編集。
現在、かなりの量の出力が得られていますが、チェックしたバイト[10000]のサイズ制限内の大きなアイテムがディレクトリにあるすべてではありません。
誰かがこれを改善して、うまくいく正確な答えを得たいと思っているなら、私はまだこの投稿をチェックしています.
ありがとう
java - IOException の場合にストリームを閉じる DataInputStream
すべての例で、誰もが次のようなコードを見つけることができます:
このコードがFileNotFound
例外に遭遇したとき、inputStream
開いていなかったので、閉じる必要はありません。
しかし、なぜIOException
その catch ブロックで mets が表示されないのですかinputStream.close()
。この操作は、入力データの例外がスローされたときに自動的に実行されましたか? プログラムが入力に問題がある場合、これはストリームがすでに開いていることを意味するためです。
android - ソケットを介して ByteArray を送受信中にアプリがクラッシュする
ソケット通信を使った簡単なチャットアプリを作ろうとしています。私の目標は、テキストと画像 (スマートフォン ギャラリーから) を正常に送受信することです。テキスト部分は成功しましたが、画像に問題があります。
dataInput/OutputStream を使用してコードを作成しました。以下は、bytearray を使用して画像転送用のソケット接続を確立するコードです (アプリはテキストと画像に異なるポートを使用します)。
while ループは、サーバーからの入力 bytearray を待機することです。ハンドラーは、デコードされた bytearray をディスプレイに表示します。
--> img_input.readFully(byte_input); この行が問題になると思います。ハンドラーが正常に動作することを確認しました。空の while ブロックを使用しても、アプリは停止しませんでした。
問題は何でしょうか?
サーバー側のコードを以下に示します。 (メッセージスレッドは省略)
java - System.inでのJavaDataInputStreamの使用
簡単なプログラム
やや奇妙な動作をします。入力されたテキストの出力を拒否します...端末を使用してテキストを入力しましたが、出力には何もありません。どうしたの?
java - Javaは16進数を逆にします
私はそのようなファイルを読み取ろうとしています:
と
今、私はそのような16進数を読みたいです:
必要な方へ: これが私のファイルの最初のバイトです
3412 aa55 0200 0000
問題は、私の出力0x3412aa55
が0x55aa1234
. これを修正するにはどうすればよいですか?
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日間を費やしました。
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 でそれを行う方法がわかりませんし、インターネットでも答えを見つけることができませんでした。
java - ソケットを使用してデータを送信したクライアントを特定する
私は問題があります。
私のコードには、サーバーへの「イン」と「アウト」を持つすべてのプレーヤーの配列があります。
サーバーからクライアントへ私は問題なくうまく通信でき、すべてのクライアントはサーバーから送信された変更をGUIに表示します。
問題は、クライアントからサーバーへの通信です。サーバーとして、私はすべてのプレイヤーからいくつかの仕事をするための請願を受け取りたいと思っています。問題は、どのインデックスから請願書を受け取ったかわからplayers[index].in.readUTF()
ず、プログラムをブロックするすべての原因を確認できないことです。
手助け?in.avaiable()
私にはうまくいきません。
それをより明確に示すために:
プレイヤーがサーバーにログインするとき、私はサーバー側でこれを行います。
次に、サーバー側にメッセージを待機しているスレッドがあります。
問題は、どのプレーヤーの配列のインデックスから(どのプレーヤーから)メッセージが来るのかわからないことです。サーバーに何も送信していないプレーヤーのインデックスを確認できません。サーバーがプログラムをブロックするためです。
それがどのように機能するかです:
サーバーからクライアントへ私はただします:
player[i].out.writeUTF(message)
サーバー側から- クライアントはそれを実行し
in.readUTF()
、すべてが正常に動作します
クライアントからサーバーへ私はします:
out.writeUTF(message)
クライアントから- しかし、サーバー側では、
player[i].in
どのプレーヤーかわからないものを読み取るために1つを選択する必要があります。