作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个用户类,可以输入信息。然而,一旦主方法关闭,信息就会丢失。我想知道如何将所有信息存储到结构如下的文本文件中。
用户名
收件箱中的邮件数量
消息1发件人
消息1接收者
消息1主题
消息1正文
消息2发送者
消息2接收者
消息2主题
消息2正文...
消息类
public class Message {
// the properties of a message
private String sender;
private String receiver;
private String subject;
private String body;
// all property values are known at creation of the message; so initialize
public Message (String s, String r, String sub, String b)
{
sender = s;
receiver = r;
subject = sub;
body = b;
}
// any nice format of printing the names and the values of the properties will do
public void printMsg()
{
System.out.println("Sender: " + sender);
System.out.println("Receiver: " + receiver);
System.out.println("Subject: " + subject);
System.out.println("Message: " + body);
}
// what follows are basic getter methods
public String getSender()
{
return sender;
}
public String getReceiver()
{
return receiver;
}
public String getSubject()
{
return subject;
}
public String getBody()
{
return body;
}
}
用户类别
import java.util.ArrayList;
public class Userlist
{
private ArrayList<User> users;
private int numUsers;
public Userlist()
{
users = new ArrayList<User>();
}
public User findUser(String username)
{
for (User i : users)
{
if (i.userName.equals(username))
return i;
}
return null;
}
public void addUser(User u)
{
if (findUser(u.userName) != null)
System.out.println("User already exists");
else
{
users.add(u);
numUsers++;
}
}
public int getNumUsers()
{
return this.numUsers;
}
public User getUser(int i)
{
if (i>=users.length)
return null;
else
return users.get(i-1);
}
}
最佳答案
技术 1:人类可读格式
如果您需要以人类可读的格式存储它,您有以下选择:
1)将其存储为JSON(您可以查看GSON库,它的使用相当简单)
2) 存储为 XML
3)您需要编写逻辑将对象转换为字符串表示形式(这可能需要大量工作)
技术 2:二进制文件
将对象的内容/状态存储到文件的过程称为序列化。您可以看以下教程: Java - Serialization
在主方法退出之前,您可以通过序列化用户对象将对象序列化到某个文件。另外,当您序列化用户 A 的对象时,您可以序列化该用户的所有消息。
首先,您需要声明所有要序列化为可序列化的类:
public class UserList implements Serializable
{
}
public class Message implements Serializable
{
}
然后对于序列化/反序列化,您可以使用以下代码:
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(fos);
UserList userList ; // assume this is the object to be serialized
out.writeObject(userList); // serializes the object
从文件中获取对象(反序列化):
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(fis);
userList = (UserList) in.readObject();
关于java - 如何将类中的所有信息存储到单个文本文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23022031/
我是一名优秀的程序员,十分优秀!