gpt4 book ai didi

java - 在线存储java对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:19 26 4
gpt4 key购买 nike

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

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

此刻我得到一个异常,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();

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

非常感谢,卢克

最佳答案

除非该连接是可写的,否则您不能直接写入 URLConnection。

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

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

http://host/scores.data

提供数据,同时

http://host/uploadscores

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

关于java - 在线存储java对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10760602/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com