これはスタック オーバーフローに関する私の最初の質問です。オンラインで少し検索しましたが、BufferedReaderを使用してテキストファイルを読み取るか、インターネット上のファイルからバイトを読み取ることについて説明するチュートリアルまたは回答を見つけ続けています。理想的には、私が作成したゲームのプレイヤーによって作成されたすべての Score オブジェクトを格納する「http://ascistudent.com/scores.data」というファイルをサーバーに置きたいと考えています。
ゲームはシンプルな「ブロック落とし」ゲームで、同じブロックを 3 つつなげるとスコアが上がります。時間がなくなると、スコアがファイルから読み込まれ、そのスコアが Score オブジェクトのリストの正しい位置に追加されます。その後、スコアは同じファイルに再度保存されます。
現時点では、強調表示された行で例外java.io.EOFExceptionが発生します。
URL url = new URL("http://ascistudent.com/scores.data");
InputStream is = url.openStream();
Score s;
ObjectInputStream load;
//if(is.available()==0)return;
load = new ObjectInputStream(is); //----------java.io.EOFException
while ((s = (Score)load.readObject()) != null){
scores.add(s);
}
load.close();
これは、ファイルが空であることが原因であると思われます。しかし、この例外をキャッチし、次のコードを使用して (スコア リストを変更した後に) とにかくファイルに書き込むように指示すると、何も書き込まれていないように見えます (例外は引き続き発生します)。
URL url = new URL("http://ascistudent.com/scores.data");
URLConnection ucon = url.openConnection();
ucon.setDoInput(true);
ucon.setDoOutput(true);
os = ucon.getOutputStream();
ObjectOutputStream save = new ObjectOutputStream(os);
for(Score s:scores){
save.writeObject(s);
}
save.close();
私は何を間違っていますか?誰かが私を正しい方向に向けることができますか?
どうもありがとう、ルーク