問題タブ [dataoutputstream]
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 - WriteUTF と ReadUTF、どうすれば文字列を書き込んで別の側で短い例外を取得できますか?
基本的に、私は両側の間でソケット接続を行っています。Java サーバーと Android クライアント。Gson ライブラリを使用してオブジェクトを String Json に変換し、Android クライアントからメソッド WriteUTF を介してそれらを送信しています。しかし、Java サーバーで応答を取得しようとすると、「java.io.DataInputStream.readUnsignedShort(Unknown Source) で java.io.EOFException」が発生します。このメソッド (readUnsignedShort) を使用しなかった場合、または Short を送信しなかった場合はどうすればよいでしょうか? ここにコードがあります。
Android クライアントからの書き込み:
Javaサーバーからの読み取り:
ログも役立つ場合があります。
Server3.java:71 はサーバー コードの次の行です: while((line = in.readUTF()) != null) {
java - DataOutputStream を使用してバイナリ データをファイルに書き込むときの空行
私は、サーバーから PDF ファイルをバイナリ データの形式でダウンロードしてディスクに書き込む必要がある iOS および Android アプリに取り組んでいます。Android デバイスで Adobe Reader を使用してファイルを開こうとすると、iOS で動作中に無効なフォーマット エラーが発生します。
Android での関連コードは次のとおりです。
Mac でファイルを .txt ファイルに変換し、テキスト エディターで開くと、Android アプリによってダウンロードされたファイルには多くの空白行があることを除いて、コンテンツはまったく同じように見えます。これが問題なのか、どうすれば解決できるのか疑問に思っています。
また、両方のプラットフォームで配列の長さ、ファイルに書き込まれる各項目の値などを確認したところ、まったく同じでした。
2 つのスクリーンショットを添付しました。1 つ目は Android でダウンロードしたファイルで、2 つ目は iOS でダウンロードしたものです。
どんな助けでも大歓迎です。ありがとうございました :)
Android スクリーンショット https://dl.dropboxusercontent.com/u/67408017/Screen%20Shot%202014-02-20%20at%2011.18.41%20AM.png
iOS スクリーンショット https://dl.dropboxusercontent.com/u/67408017/Screen%20Shot%202014-02-20%20at%2011.18.49%20AM.png
java - FileOutputStream および DataOutput Stream に関する問題
問題は、それを使って文字を書くFileOutputStream
と読めることです。しかし、それをチェーンするとDataOutputStream
、書き込まれたデータが読み取れなくなります。
何故ですか ?両方ともファイルにバイト単位で書き込むためFileOutputStream
。DataInputStream
処理はどのように正確に行われますか?
コード:
この場合、次の出力が表示されます。
理由を理解する必要がありますか?
android - 進捗値を正しく設定するにはどうすればよいですか?
グーグルとスタックオーバーフローで何度も検索しましたが、本当に必要なものが見つかりません。asynctask メソッドを使用してファイルをサーバーにアップロードするコードを作成しました。私がしたことは次のとおりです。 ayntask メソッドで、postメソッドを使用してファイルをwebserviceにアップロードします。doInBackgroundメソッドで:
String serverResponseMessage = conn.getResponseMessage(); より長い時間
私のuploadprogressは4回設定されており、実際にファイルをサーバーにアップロードするのにさらに時間がかかります。コードが終了する場合に必要なのはwhile
なぜですか。プログレスバーの値をより敏感に設定するにはどうすればよいですか。progressbar
値を100に設定すると、ファイルのアップロードが必要になります本当に終わります。onpreexecute メソッドと onpostexecute メソッドを設定しました。でも、ここに書く必要はないと思います。また、進行状況を使用notificationbar
するため、パーセンテージを表示する必要があります。
java - DataOutputStream: 「エンコードされた文字列が長すぎる」制限の目的
java.io.DataOutputStream.writeUTF(String str)
メソッドには、UTF-8 でエンコードされた文字列のサイズを65535
バイトに制限する奇妙な制限があります。
次の理由から、それは奇妙です。
- このメソッドの JavaDoc には、この制限に関する情報はありません
static int writeUTF(String str, DataOutput out)
この制限は、このクラスの内部メソッドをコピーして変更することで簡単に解決できます- 逆の方法ではそのような制限はありません
java.io.DataInputStream.readUTF()
。
上記によると、このwriteUTF
方法でそのような制限の目的を理解できません。私は何を見逃したり誤解したりしましたか?