今天遇到的一个问题 :
程序运行时, ObjectOutputStream 写入的对象,我可以通过ObjectInputStream 读出来,可是,当我关闭程序,然后下次再代开程序的时候,我有不能从文件中读到数据了,而且,还报可恶的EOFException,
原因就在于,我在用ObjectInputStream读文件之前,就已经让 ObjectOutputStream 与文件建立了连接,也就 ObjectOutputStream oos = new ObjectOutputStream (new FileOutputStream (f)); 这样的话,似乎就已经对对文件进行了破坏,因为当我ObejectInputStream 去读的时候,用File.length() 得出的大小为文件的初始大小!
所以,我得出的结论,只要ObjectOutputStream 与 文件建立了连接,那么就会覆盖文件,文件回归初始状态!所以,他不支持,像FileOutputStream一样,在文件末尾添加数据,因为那样,前后两次的对象头信息就会不同,那还怎么通过ObejctInputStream 读出了!
相关推荐
// getters and setters } ``` 2. 创建服务器端代码: ```java import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.net.ServerSocket; import java.net.Socket; public class ...
Java序列化与ObjectOutputStream和ObjectInputStream的实例详解 Java序列化是指将Java对象转换为字节流的过程,以便将其存储或传输,而后可以将其恢复为原来的对象状态。Java提供了两种方式来实现序列化: ...
6. **TransformIO(06_TransformIO.avi)**:转换流(Transform Stream)如ObjectInputStream和ObjectOutputStream,用于对象的序列化和反序列化。这部分内容将介绍如何将Java对象转换为字节流,以便在网络或磁盘上...
数据传输可能采用了ObjectInputStream和ObjectOutputStream,它们允许对象的序列化和反序列化,以便在网络间传输。 此外,考虑到聊天室可能扩展为局域网游戏平台,那么可能需要实现网络同步和并发处理,这可能涉及...
同时,可能使用ObjectInputStream和ObjectOutputStream序列化和反序列化游戏状态,以便在游戏中加载和保存复杂的数据结构。 3. Socket网络通信: 在多人合作模式下,游戏需要通过网络进行玩家间的数据交换。Java的...
15. Java中,使用ObjectInputStream和ObjectOutputStream进行序列化和反序列化时,对象必须实现Serializable接口,否则会抛出NotSerializableException异常。 16. HTTP(超文本传输协议)是互联网上应用最为广泛的...
Java提供了`Serializable`接口和`ObjectInputStream/ObjectOutputStream`类来实现这一过程。 **5. GUI设计** OICQ的用户界面(UI)通常由Java的Swing或JavaFX库构建。这些库提供了丰富的组件和布局管理器,可以方便...
可以使用File、BufferedReader和BufferedWriter类来读写文本文件,将联系人数据序列化为文本格式,或者使用ObjectInputStream和ObjectOutputStream进行对象的序列化和反序列化,实现更复杂的数据持久化。 6. **...
6. Java中,使用ObjectInputStream和ObjectOutputStream进行对象序列化和反序列化时,对象必须实现Serializable接口。 7. 4KB表示4096个字节,而不是4000个字节,因为1KB等于1024字节。 8. 计算机运行的程序文件...
5. **对象序列化与反序列化**:ObjectInputStream和ObjectOutputStream用于对象的持久化存储和恢复,可以将Java对象转换为字节流进行保存或网络传输。 6. **文件流**:FileInputStream、FileOutputStream、...
10. Java中,对象序列化需要实现Serializable接口,否则无法通过ObjectInputStream和ObjectOutputStream进行序列化和反序列化。 11. 一张幻灯片是PowerPoint演示文稿的一部分,不是整个文稿。 12. 在Word中,取消...
Java的Serializable接口和ObjectInputStream/ObjectOutputStream类可用于实现这一过程。 5. **用户认证与授权**:为了确保安全,系统需要实现用户身份验证和权限控制。这可能涉及到数据库操作,使用Java的JDBC库与...
3. **数据序列化**:消息在网络间传输时需要转换为字节流,Java的`java.io.Serializable`接口和`ObjectInputStream/ObjectOutputStream`类可用于对象的序列化和反序列化。对于复杂的结构,如用户信息或聊天记录,...
Java的Serializable接口和ObjectInputStream/ObjectOutputStream类为此提供了支持。 7. **数据库存储**:为了保存历史聊天记录,通常会使用数据库,如MySQL或SQLite。Java提供了JDBC(Java Database Connectivity)...
Java的`Serializable`接口和`ObjectInputStream/ObjectOutputStream`类提供了默认的序列化机制。此外,可能还会使用JSON或XML格式进行数据交换,这就需要如Jackson或Gson等库来帮助解析。 5. **用户界面**:客户端...
Java提供`ObjectOutputStream`和`ObjectInputStream`类来处理对象的序列化和反序列化。`ObjectOutputStream`用于写入对象到输出流,而`ObjectInputStream`则用于从输入流读取对象。 ```java try (FileOutputStream ...
ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(student); oos.close(); fos.close(); } ``` 反序列化则是从文件中读取序列化对象的过程,需要以下步骤: 1. 创建`FileInputStream`...
21. Java中,使用ObjectInputStream和ObjectOutputStream进行对象的序列化和反序列化时,对象必须实现Serializable接口(答案正确)。 22. 数字/货币型数据的小数位数: - 字段为字节、整数、长整数时,小数位数为...
JdkSerializationRedisSerializer 是目前最常用的序列化策略,将 POJO 对象的存取场景,使用 JDK 本身序列化机制,将 POJO 类通过 ObjectInputStream/ObjectOutputStream 进行序列化操作,最终 Redis 服务器中将存储...