問題タブ [objectoutputstream]

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

android - 「toByteArray()」が実行されないのはなぜですか?

私は何時間もこれを理解しようとしてきました、そしてそれはとてもイライラします!このメソッド「saveDataToDisk(Objecto)」に渡すオブジェクトである「ハッシュテーブル」をシリアル化しています。これを通常のJavaプロジェクトでテストし、「toByteArray()」を正しく実行しますが、AndroidではtoByteArray()にヒットするたびに、常にキャッチに入ります...何かアイデアはありますか?前もって感謝します。

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

java - オブジェクトの出力と入力の問題、入力の最初の行のみを出力します

クラス用のチャット サーバーを作成していますが、オフライン ユーザーのログ メッセージに問題があります。データはオブジェクトとしてログファイルに追加され、ログを記録するにつれてサイズが大きくなります。メッセージを受信したユーザーとしてログインすると、送信された最初のメッセージのみが返されます。私はこれに多くの時間を費やしてきましたが、何が欠けているのかわかりません。

入力:

出力:

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

java - Java ObjectOutputStream とファイルの更新

私は1つの実装の問題を理解するのに苦労しています.1つのクラスがあり、リストのように動作しますが、コレクションにファイルを保持する代わりに、それらをディスクに保存します。

リストに要素を追加したいときに問題が発生します。ファイルの先頭に、リストにあるオブジェクトの数を示す 1 つの int がありますが、この値を更新するエレガントな方法がわかりません。私はこのようなものを持っています:

私はこのようなものを使用しようとしました:

しかし、私が観察したように、ファイルの先頭、シリアル化ヘッダーまたは sth にいくつかのデータが書き込まれます。ファイル内の単一のエントリを更新するにはどうすればよいですか、または変更する方法

ファイルの先頭に書き込む「ポインタ」?

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

java - 画像の送信 ObjectOutputStream

私は、降下の解決策を思いつくことができないものに出くわしました。サーバーからクライアントにいくつかの string[] メッセージを送信しましたが、画像も送信したいと考えています。問題は、バイト[]ではなく、クライアント側のオブジェクトをチェックすることです。これにより、画像が到着したときに画像を処理する際に問題が発生します。

今、私はこれを受信文字列[]に使用します:

しかし今、私はこのストリームが String[] と bytes[] の両方を処理できるようにしたいと思っています。

私はこのようなものが欲しいです:

しかし、画像ファイルが来ると o = input.readObject() が私にこれを与えるので、それは問題ではありません:

12-05 23:00:20.255: W/System.err(16157): java.io.StreamCorruptedException: 間違った形式: ac

バイトを書き込むためのコード:

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

android - ObjectOutputStream.writeObject() が IOException をスローするのはなぜですか?

現在、バッテリー レベルなどの特定のイベントに基づいて電話の状態を自動的に変更する Android アプリに取り組んでいます。名前、イベント、状態の 3 つの主要なパラメーターを持つプロファイル クラスがあります (イベントと状態は他の 2 つのカスタム クラスです)。

私の ProfileEdit クラスには、ユーザーがプロファイルを構成するための EditText や Spinner などのさまざまなコンポーネントがあります。各プロファイルを表示する ListActivity クラスの Profile タイプの ArrayList と、現在の ArrayList を取得して新しいプロファイルを追加または更新する ProfileEdit クラスにアクセスする必要があります。

最初にこれを行う必要があったのは、ObjectOutputStream を使用して ArrayList を電話の SD カードに書き込むことでした。その後、それを必要とする任意のクラスで取得できます。ただし、これまでにこれを実行しようとすると、IOException がスローされるだけです。私のコードは次のとおりです。

プロファイル オブジェクトは、ファイルに書き込まれる ArrayList です。これが例外をスローする理由がわかりません。writeObject("Hello"); を呼び出して、オブジェクトを文字列に変更しようとしました。例外がスローされなくなったため、ArrayList に問題があるとしか考えられません。ArrayList クラスは serializable を実装し、私の Profile クラスも serializable を実装しているという印象を受けましたが、なくても同じことを行います。

または、ProfileList (ListActivity) クラスと ProfileEdit クラスの両方に同じ ArrayList へのアクセスを許可するより良い方法がある場合は、お知らせください。

編集: IO Exceptions スタック トレースは次のとおりです: (ProfileEdit クラスの 114 行目は writeObject() 行です)

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

java - 署名済みファイルを読み取った後、署名を検証できません

sign.verify(signature) は verifySignature メソッドで false を返します。そして、signedobject.objファイルで出力ストリームと入力ストリームをどのように使用するかについて何か関係があると思います(証明書は有効性を通過しました)。ファイルからメッセージを正しく読み取ることができます。

コード:

verifySignature(KeyStore) メソッド:

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

java - AndroidとObjectOutputStreamをリソースファイルに

私はAndroid開発に本当に慣れていません。最初のプロジェクトは、ディスプレイとロジック部分を備えたシンプルなゲームでした。ゲームに保存機能を追加したいのですが、実装に問題があります。

ObjectOutputStreamを使用して、この方法で実行したいと思います(重要な部分だけが含まれています)

しかし、「そのようなファイルはありません...」というエラーメッセージが常に表示されます。rawディレクトリに「testfile.txt」を作成しても、同じエラーが表示されます。

私を助けてください、私は何が間違っているのですか?

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

java - ソケット通信のプロセス中に ObjectInputStream.readObject() が永久にハングする

Linux システムでソケット通信の問題が発生しました。通信プロセスは次のようになります。クライアントはメッセージを送信してサーバーに計算タスクを実行するように依頼し、タスクの完了後にサーバーからの結果メッセージを待ちます。

ただし、サーバー側からはクライアントに応答するために結果メッセージがソケットに書き込まれていても、タスクに約 40 分かかる場合、クライアントは結果メッセージを待つためにハングアップします。 1 分など、タスクにほとんど時間がかからない場合は、結果メッセージを受け取ります。また、この問題はお客様の環境でのみ発生し、通信プロセスはテスト環境で正常に動作します。

この問題の原因は、ソケットのデフォルトのタイムアウト値がお客様の環境とテスト環境で異なるためではないかと推測していますが、以下の値はこれら 2 つの環境、およびクライアントとサーバーの両方で同じです。

クライアントのコードは次のようになります。

サーバー上のコードは次のようになります。

この問題を解決するために、フラッシュとリセットの方法を追加しましたが、問題はまだ存在します:

この問題を解決するために私が次に何をすべきかを知っている人はいますか。原因は環境設定だと思いますが、どのような環境要因がソケット通信に影響を与えるのかわかりませんか?

また、Tcp/Ip プロトコルを使用して通信するソケットの問題は、長時間のタスクに関連しているため、tcp に関するどの値がソケット通信のタイムアウトに影響しますか?

ログについて分析したところ、メッセージがソケットに書き込まれた後に例外がスロー/キャッチされていないことがわかりました。ただし、常に 15 分後に、クライアントからの要求を受け入れるために使用されるサーバー側の objectInputStream.readObject() コード スニペットに例外があります。ただし、socket.getSoTimeout の値が 0 であるため、タイムアウト例外がスローされたのは非常に奇妙です。

では、なぜ Connection Timed out 例外がスローされるのでしょうか?

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

java - Javaのシリアル化。フィールドは値を変更します

次の問題があります。トランザクション状態を「開始、終了、または進行中」に設定できます。これを設定してから、Transactionオブジェクトをサーバーにシリアル化します。サーバーはそれを取得します。最初はチャームのように機能しますが(トランザクションが開始モードの場合)、オブジェクトを再送信すると、今回は「進行中」モードで、サーバーは引き続き「開始」モードでオブジェクトを表示します。シリアル化前の行と逆シリアル化後の行でコードをテストしましたが、これが間違いなく問題の原因です。どんな助けでも大歓迎です。関連するコードスニペットは次のとおりです。

シリアル化

デシリアライズ

およびTransactionクラス:

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

java - ObjectOutputStream がデータを送信していない

クライアントコード:

サーバーコード:

サーバーはバイトを受信しません。クライアントからのバイトを待つだけで、決して来ません。なぜ送信されないのか、受信されないのかわかりません。どんな助けでも大歓迎です。