1

System.out.println("Java is awesome!");

原谅我的热情;我简直不敢相信 Java 有多么强大,它不仅能够保存对象(并加载它们),而且它的主要目的是通过网络发送它们。这正是我必须做的,因为我正在进行 beta 测试。在这个 beta 测试中,我给了测试者一个游戏版本,它将数据作为对象保存在大多数人不知道的位置(我们是开明的人哈哈哈)。这可以很好地工作,但它并不意味着长期坚持。但是,我可以通过一些客户端/服务器与套接字的交互来收集它们的record.sercounter.bin文件(后者告诉我有多少对象record.ser)(我对此一无所知,直到我开始阅读它,但我仍然感到无能为力)。我在网上看到的大多数示例(例如:http://uisurumadushanka89.blogspot.com/2010/08/send-file-via-sockets-in-java.html)将文件作为字节流发送,即一些 ObjectOutputStream 和 ObjectInputStream。这正是我当前版本的游戏用于保存/加载 GameData 的内容。

很抱歉这个冗长的介绍,但你知道我必须做什么(逐步,所以我可以理解)来实际发送整个文件。我是否必须逐字节(或逐个对象)重建文件?

4

2 回答 2

1

其实很简单。只需使您的对象可序列化,并创建一个 ObjectOutputStream 和 ObjectInputStream 连接到您拥有的任何底层流,例如 FileInputStream 等。然后只需将您想要的任何对象写入流并在另一端读取它。

这是给你的一个例子

对于套接字,它将类似于

ObjectOutputStream objectOut = new ObjectOutputStream(serverSocket.getOutputStream());
ObjectInputStream objectIn = new ObjectInputStream(clientSocket.getInputStream());
于 2013-05-21T10:50:31.040 回答
0

Java 序列化是一个非常强大的协议。java.io.ObjectOutputStreamjava.io.ObjectInputStream是更高级别的课程,当然是用较低级别的课程包装的FileInputStreamFileOutputStream。我的问题是,当整个文件都可以读入时,为什么要逐字节读取文件Objects

这是对该过程的一个很好的解释。

http://www.tutorialspoint.com/java/java_serialization.html

于 2013-05-21T10:53:19.923 回答