3

这是我关于堆栈溢出的第一个问题,希望你能帮助我。我已经在网上进行了一些搜索,但我一直在寻找有关使用 BufferedReader 读取文本文件或从 Internet 上的文件中读取字节的教程或答案。理想情况下,我希望在我的服务器上有一个名为“http://ascistudent.com/scores.data”的文件,该文件存储我制作的游戏玩家制作的所有分数对象。

该游戏是一个简单的“方块掉落”游戏,您尝试让 3 个相同的方块接触来增加分数。当时间用完时,从文件中加载乐谱,它们的乐谱被添加到乐谱对象列表的正确位置。之后,分数将再次保存到同一文件中。

目前我得到一个异常,突出显示行上的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();

我究竟做错了什么?谁能指出我正确的方向?

非常感谢,卢克

4

1 回答 1

1

除非该连接是可写的,否则您不能在本机上写入 URLConnection。

我的意思是,除非对方接受您要发送的内容,否则您不能直接写入 URL。这在 HTTP 中是通过 POST 请求完成的,该请求将来自客户端的数据附加到请求本身。

在服务器端,您必须接受此发布请求,获取数据并将其添加到 scores.data。您不能直接写入文件,您需要在网络服务器中处理请求,例如:

http://host/scores.data

提供数据,同时

http://host/uploadscores

应该是接受 POST 请求、处理它并远程修改 score.data 的不同 URL

于 2012-05-25T20:00:41.623 回答