写一个Java程序设计完成: (1)消息类,包括发送人,接受人,发消息的时间、消息内容等。 (2)把若干个消息对象存到文件中。 (3)从文件中读入若干消息对象,并输出到控制台。
时间: 2024-10-01 07:02:24 浏览: 26
成百上千个Java 源码DEMO 4(1-4是独立压缩包)
4星 · 用户满意度95%
在Java中,你可以创建两个类来实现这个需求,一个是`Message`类,用于存储消息信息,另一个是`MessageSerializer`类,负责序列化和反序列化消息。以下是简单的代码示例:
```java
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
// 消息类
class Message {
private String sender;
private String receiver;
private String content;
private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public Message(String sender, String receiver, String content) {
this.sender = sender;
this.receiver = receiver;
this.content = content;
}
// 获取时间和内容的字符串形式
@Override
public String toString() {
return "Sender: " + sender + ", Receiver: " + receiver + ", Time: " + dateFormat.format(dateFormat.parse(content)) + ", Content: " + content;
}
}
// 序列化和反序列化的工具类
public class MessageSerializer {
// 序列化消息列表到文件
public static void serialize(List<Message> messages, String fileName) throws IOException {
FileWriter writer = new FileWriter(fileName);
for (Message message : messages) {
writer.write(message.toString());
writer.newLine();
}
writer.close();
}
// 从文件中读取并反序列化消息列表
public static List<Message> deserialize(String fileName) throws IOException {
List<Message> messages = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
String line;
while ((line = reader.readLine()) != null) {
messages.add(new Message(line.split(",")[0], line.split(",")[1], line.substring(line.indexOf(",")+1)));
}
}
return messages;
}
}
// 主函数演示如何操作
public static void main(String[] args) {
try {
// 创建一些消息实例
List<Message> messages = new ArrayList<>();
messages.add(new Message("Alice", "Bob", "Hello, today is a good day!"));
messages.add(new Message("Charlie", "David", "Have a nice weekend!"));
// 序列化到文件
MessageSerializer.serialize(messages, "messages.txt");
// 从文件读取
List<Message> deserializedMessages = MessageSerializer.deserialize("messages.txt");
// 输出到控制台
for (Message message : deserializedMessages) {
System.out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
```
在这个例子中,我们首先创建了一个包含发送者、接收者、时间戳和内容的消息对象。然后,我们将消息对象列表序列化到一个文本文件中,并从文件中读取它们,最后将读取的消息输出到控制台。注意,此代码假设CSV格式的数据,如果有其他格式的需求,解析部分需要相应调整。
阅读全文