添加多个用户信息到文件采用集合并使用对象输出输入流使用java语言
首先,定义一个用户类UserInfo,包含用户名和密码两个属性:
public class UserInfo implements Serializable {
private String username;
private String password;
public UserInfo(String username, String password) {
this.username = username;
this.password = password;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
}
然后,定义一个工具类FileUtil,包含添加用户信息,读取用户信息两个方法:
import java.io.*;
import java.util.HashSet;
import java.util.Set;
public class FileUtil {
private static final String FILE_PATH = "user_info.dat";
public static void addUserInfo(UserInfo userInfo) {
Set<UserInfo> userInfos = readUserInfos();
userInfos.add(userInfo);
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(FILE_PATH))) {
oos.writeObject(userInfos);
} catch (IOException e) {
e.printStackTrace();
}
}
public static Set<UserInfo> readUserInfos() {
Set<UserInfo> userInfos = new HashSet<>();
File file = new File(FILE_PATH);
if (file.exists() && file.isFile()) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(FILE_PATH))) {
Object obj = ois.readObject();
if (obj instanceof Set) {
Set set = (Set) obj;
for (Object o : set) {
if (o instanceof UserInfo) {
userInfos.add((UserInfo) o);
}
}
}
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
return userInfos;
}
}
在测试类中,可以添加多个用户信息:
public class Test {
public static void main(String[] args) {
UserInfo userInfo1 = new UserInfo("user1", "123456");
UserInfo userInfo2 = new UserInfo("user2", "654321");
UserInfo userInfo3 = new UserInfo("user3", "abc123");
FileUtil.addUserInfo(userInfo1);
FileUtil.addUserInfo(userInfo2);
FileUtil.addUserInfo(userInfo3);
Set<UserInfo> userInfos = FileUtil.readUserInfos();
for (UserInfo userInfo : userInfos) {
System.out.println(userInfo.getUsername() + ":" + userInfo.getPassword());
}
}
}
输出结果为:
user3:abc123
user2:654321
user1:123456
``
原文地址: https://www.cveoy.top/t/topic/fGiR 著作权归作者所有。请勿转载和采集!