問題タブ [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.
java - ObjectOutputStream のアドバイス
私のプログラムの目標は、閉じたときに保存し、開いたときに再ロードすることです。
ドライバー (すべてのグラフィックスを含む) があり、ファイルを作成して保存したいと考えています。私はインターネットで数多くのチュートリアルを見てきましたが、実際のプログラムでこのシステムを正しく実装する方法を説明していません。
メイン メソッドで OutputStrema を作成する必要がありますか? ファイルが作成されているかどうかを確認し、作成されていない場合は作成し、作成されている場合はそこから読み取る必要がありますか? これをすべて達成するにはどうすればよいですか?すべてのデータを保存できるように、終了するための WindowListener が必要ですか?
ありがとう
java - java.io.StreamCorruptedException: 無効な型コード: 00
つまり、基本的にはクライアントサーバーのマルチプレイヤーゲームを書いています。RequestForGame を受け取った場合に gameThread を作成する SeverCommunicationThread が gameThread を作成します。RequestForGame 例外を送信すると、java.io.StreamCorruptedException: 無効なタイプ コード: 00 がスローされます。両方のスレッドが同じ ObjectInputStream を読み込もうとするためだと思います。それがどのように機能するかについてあまり理解していません。使用方法を知っているだけです。それ。何が問題で、どのように修正すればよいかを理解するのを手伝ってもらえますか? ありがとう :)
model.addClient メソッドですが、問題はここにあるとは思いません
オブジェクトをサーバーに送信するクライアント側プロキシ。メソッドは GUI でのユーザー アクションによってトリガーされます。
}
java - ObjectOutputStream と ObjectInputStream の使用方法
詳細:
私のプログラムは、5 つのクラスがすべて集約された成績表です。GradeBook にはコースがあり、Course にはカテゴリがあり、Category には Grades (すべて ArrayLists) があります。私のプログラムには、深い集約のためにオブジェクトへの参照を返すことだけを目的とする StateManager もあります。私のドライバーでは、GradeBook のインスタンスは作成しませんが、参照を返すメソッドを持つ GradeBook の静的インスタンスを持つステートマネージャーを作成します。
私の目標は、このデータをすべて保存して、プログラムを再実行したときに再度開くことです。
質問:
ファイルを作成するときは、StateManager オブジェクトを作成するだけですよね?私はこれさえ達成したと思います。プログラムに「gradebook.data」ファイルを作成させます。.data ファイルをテキスト プログラムで開き、正しく書き込まれているかどうかを確認する方法はありますか?
inputstream を使用してオブジェクトを再度開くにはどうすればよいですか? 静的なメイン メソッドまたはすべてのグラフィックスを初期化するメソッドの先頭で?
ありがとう
java - .txt ファイルへのオブジェクトの追加
「シリアライゼーション」の章の最後の演習で与えられたプログラムを試していました。
このプログラムでは、クラスである型 Name と Address の 2 つのデータ メンバーのみをカプセル化するクラス Person を宣言する必要があります。次に、キーボードから一連の名前とアドレスを取得し、オブジェクトを作成してファイルに書き込む必要があります。ただし、FILE ALREADY EXISTS の場合、オブジェクトは既存のファイルに追加する必要があります。私のプログラムは初めて完全に実行されますが、2 回目は、追加されたレコードを読み戻そうとすると、例外が発生します。
これについて少し調査したところ、StreamHeader は 1 回だけ書き込むことができ、追加すると破損することがわかりました。それを回避する方法は何ですか?
オブジェクト書き込みコードは次のとおりです。
java - 変更されたハッシュマップを送信しますが、ObjectOutputStreamとObjectInputStreamを使用して同じものを取得します
上記のコードは2つのファイルからのものです。それらを実行すると、コンソールは同じ結果を出力します。
これはどのように起こりますか?
java - (objectinputstream) ObjectInput.readObject() は私に空のオブジェクトを与えています
私はこのクラスを持っています:
これらのメソッドを使用して、クラス (SaveState オブジェクト) を SD カードに保存し、ファイルからオブジェクトを再度オブジェクトに読み込みます。
オブジェクトを保存し、アプリを閉じるたびに、アプリを開くたびにSDカードからオブジェクトを読み取り、正常に動作します。アプリの新しいバージョン (1.01) を作成したときに問題が発生します。アプリを起動してSDカードからファイルを読み取ろうとすると、ファイルは読み取られますが、オブジェクトクラスのすべての変数は空であり、実際には空ではありません.
コードが正しく動作しないのはなぜですか? 修正するにはどうすればよいですか?
java - .dat ファイルからシリアル化可能なクラスを読み取れません
私はキーホルダーを書き込もうとしていますが、ObjectOutputStream を使用してパスワードを .dat ファイルに書き込んでから、ObjectInputStream を使用してそれらを読み取りたいと考えています。これはオブジェクトを書くための私のコードです:
これは機能しているように見えますが、ファイルを再度読み取って PWlist 配列にオブジェクトを配置しようとすると、PinPW が Serializable を実装し、インポートされているにもかかわらず、PinPW はシリアライズ可能ではないと表示されます。PinPW の基本クラス (Info) も Serializable を実装し、それをインポートします。これは、ファイルを読み取ったコードです。
PWlist 配列は Info 配列であり、PinPW と longPW は Info を拡張します。
この問題を解決するにはどうすればよいですか?
java - ObjectOutputStream を別のクラスに渡す
クライアント/サーバー システムで使用する GUI プログラムを開発していますVector
。接続を確立するObjectOutputStream
とObjectInputStream
作成されますが、新しいクラスを開こうとしたときにそれを新しいクラスに渡す方法がわかりません。私のStartup
クラスには、作成されてさまざまなクラスに渡されてさまざまなフィールドが変更されるSerializable
オブジェクト ( Message m
) があり、クライアントとサーバーの間で接続が確立されます。
私のStartup
クラスでは、このコードを持っています...
WhatToDo
クラスで私はこのコードを持っています...
で行ったように、新しいことObjectOutputStream
を行うと、サーバーへの新しい接続が作成されます。で作成した既存のものを使用したい。事前に助けてくれてありがとう!ObjectInputStream
Startup
Streams
Startup
WhatToDo
ボタンを押して を使用しているActionListener
ため、後で で使用するためにストリームをコンストラクターに保存する必要がありますActionListener
。
java - Javaの逆シリアル化:バッファから読み取るときにオブジェクトの最後に到達したことをどのように知ることができますか?
いいタイトルを考えてみましたが、失敗したようです。これが私の問題です:
ソケットからデータを読み込んでいます。バッファに含まれるデータはシリアル化されたオブジェクトです。データが完全に読み取られたら、ObjectInputStreamを作成し、readObjectを使用してデータを読み込むことができます。
私の問題は、私のソケットクラスがバイトを読み取っているので...完全なオブジェクトを受け取ったことをどのように知ることができますか?オブジェクトの終わりのインジケーターがないようです。シリアル化されたバイトコードの内訳を探して長さフィールドを見つけることができるかどうかを確認しようとしましたが、シリアル化のバイトコードはGoogleで見つけることができる場所では十分に説明されていません。
私が受け取っているオブジェクトは、違いが生じる場合はハッシュマップ(java.util.Map)です。
これが私が使用しているコードの一部です:
だから、私の質問は、私がm_DataInを読んでいるときに、オブジェクトの終わりに到達したことをどのように判断するのですか?
注:これらのオブジェクトを受信しているサーバーを変更することはできません。それは私のコードではありません。
ありがとう。
チャールズ。
java - オブジェクトファイルの追加を回避するために、このサブクラスを具体的に実装するにはどうすればよいですか?
プログラムにオブジェクトファイルを追加するのに問題がありました。私はこのSOの答えを見つけました。
ただし、をサブクラス化する方法がわかりませんAppendableObjectOutputStream
。誰かが親切に私にどのようにもっと詳細に教えてもらえますか?