問題タブ [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 - プリミティブint値のためにOptionalDataExceptionを取得しますが、JAVAでそれを回避する方法
私のコード-
および1つのPersonBeanファイル。
例外が発生しています
java.io.OptionalDataException at java.io.ObjectInputStream.readObject0(Unknown Source)at java.io.ObjectInputStream.readObject(Unknown Source)at com.practise.interview.nio.ObjectStreamExample.main(ObjectStreamExample.java:62)
これは私が思うので上げられています-
ストリーム内の次の要素がプリミティブデータであるときに、オブジェクトを読み取ろうとしました。この場合、OptionalDataExceptionのlengthフィールドは、ストリームからすぐに読み取れるプリミティブデータのバイト数に設定され、eofフィールドはfalseに設定されます。
しかし、私がプリミティブ値を設定したことを知っているので、それを回避する方法、それで回避する方法。
java - ソケットからバイト配列を読み取れません
私はJavaのソケットを介してバイト配列を転送するアプリケーションを書いています。
クライアント側でのバイト配列の生成は次のとおりです。
サーバー側で私は書く
正しく機能するファイルに書き込むことで、暗号化と復号化のプロセスを確認しました。
両端でDataInputストリームとDataOutputストリームを使用しています。
私のコードの何が問題なのか教えてください!
java - Java の DataInputStream で前後にステップする
DataInputStream を使用してビデオ ファイルを読み込んでいます。次に、バイト配列を使用して各フレームのデータを 1 つずつ読み取り、連続して表示しています。私の質問は、前のフレームをもう一度見たい場合、または将来のフレームを見たい場合はどうすればよいかということです。ストリームに戻ることは可能ですか、それとも他の方法は可能ですか?
java - Java:DataInputStreamのdis.read()およびdis.readUTF()との違い
簡単な質問。
dis.read()
との違いは何dis.readUTF()
ですか?
たとえば、dis.read()
バイト配列とdis.readUTF()
アクセスString
タイプにのみ読み取ります。
それが正しいか?
サーバーに実装がある場合dis.readUTF()
、バイトストリームを読み取ることができませんか?
java - Java DataInputStream と BufferedInputStream
ソケット接続からサーバーへの非同期メッセージ (さまざまなサイズ) を受信して処理するための効率的なソリューションを探しています。これは十分な量の帯域幅です (おそらく 250 kB/秒の定常状態で、最大 1 MB/秒の短いバーストを持つことができます)。現在、私は DataInputStream を使用していますが、忙しい瞬間に切断されます (キューのバックログが大きくなりすぎると、サーバーはクライアントを切断します)。
BufferedInputStream がより適切に機能するかどうか、誰でも確認できますか? バイトごとではなく、一度にデータのチャンクを取得することを読んだので、OS 呼び出しが少なくなります。
ありがとう!
java - ソケットを介してDataOutputStreamを使用してPointの配列を送信する方法はありますか?
ソケットを介してDataOutputStreamを使用してポイントの配列(Point points [] = new point [20])を送信し、反対側のDataInputStreamを使用して正しく読み取ることができるようにします。各要素を個別に送信することはできません。配列全体として送信する必要があり、配列全体として解釈できる必要があります。
android - AndroidがテキストファイルからUTFでUTFDataFormatExceptionの読み取りを取得
Androidアプリのイベントログで、UTFDataFormatExceptionエラーが発生していることに気づきました。私が読んでいるファイルは私のアプリによって書かれていますが、ユーザーのストーリーに関する情報が格納されているため、あらゆる種類の文字/文字列を含めることができます。特定の文字の読み取り/書き込みに問題があるかどうか疑問に思っていますか?
私は以下を使用して書きます:
そして私は以下を使用して読みました:
私が記録したエラースタックトレースのいくつかは次のとおりです。
デコードメソッドのソースを調べましたが、何が起こっているのか/なぜ失敗しているのかわかりません:
何か案は?
c# - DataInputStreamはAndroidで2048バイトのデータのみを受信しますか?
PC(サーバー側)から、C#.Netアプリケーションは22000バイトのデータをWi-Fi経由でAndroidデバイス(クライアント側)に送信する必要があります。しかしdataInputStream
、Androidデバイスでは2048バイトしか表示されていません。
私は次のことと混同しています:
- PCは2048バイトのデータしか送信できませんか?
- または、Androidデバイスにはデータを受信するための2048バイトの容量しかありませんか?
または、
dataInputStream
デバイスがすべてのバイトを受信した後でも、2048バイトしか表示されませんか?(data_received <= 2048バイト)上記のコードは完全に機能します。
java - JavaでバッファリングされていないreadLineメソッドを公開するクラスはありますか?
作業中のコードベースのチャンクをクリーンアップしていますが、古いクラスの 1 つがデータの読み取りと書き込みに使用されています。このデータは、US-ASCII でエンコードされた文字列とバイナリでエンコードされたプリミティブが混在しています。
現在の実装ではDataInputStreamを使用していますが、ドキュメントでわかるように、このreadLine()
メソッドはバイトから文字への変換に関連する問題のために廃止されています。このエンコーディングの問題は実際には発生していませんが、OpenJDK 7 の一部のバージョンでは既に機能せず、非推奨とは将来的に完全に削除される可能性があることを意味するため、非推奨は問題です。「公式の」代替手段は BufferedReader から使用することreadLine
です が、 BufferedReader はバイナリエンコードされたプリミティブを実際に処理できないため、 DataInputStream で完全にスワップアウトすることはできません。
これら 2 つのクラスを「混在させる」ことの問題は、BufferedReader がストリームからバッファリングするときに、ストリーム マーカーを進めることです。これはreadDouble()
、ストリーム マーカーの実際の場所が、アプリケーション ロジックのコンテキストで「あるべき」場所ではないため、DataInputStream からのようなメソッドへの後続の呼び出しが IOExceptions または EOFExceptions で失敗することを意味します。
ある種のハッキーなmark()
/戦略を調べましたが、 /reset()
をサポートしていない FileInputStream によってストリームがサポートされることがあります。mark()
reset()
データ プロトコルを変更してプリミティブを文字として書き出すか、独自の実装を作成するreadLine()
(これは驚くほど簡単ではありません) 以外に、これを達成する方法はありますか? この時点で、外部ライブラリを検討しても構わないと思います。