Java DAO类未写入文件
我试图通过使用模型和DAO类将用户写入名为Java DAO类未写入文件,java,javafx,interface,dao,file-writing,Java,Javafx,Interface,Dao,File Writing,我试图通过使用模型和DAO类将用户写入名为users.txt的文件来创建一个登录系统 在我的控制器中,我创建了一个initialize方法: public void initialize(){ User user = new User(); user.addUser(); } public void addUser() { User newUser = new User(); UserDAO uDAO = new UserDAO(); uDAO.crea
users.txt的文件来创建一个登录系统
在我的控制器中,我创建了一个initialize
方法:
public void initialize(){
User user = new User();
user.addUser();
}
public void addUser() {
User newUser = new User();
UserDAO uDAO = new UserDAO();
uDAO.createUser(newUser);
}
下面是我的模型中包含addUser()
方法的部分:
public void initialize(){
User user = new User();
user.addUser();
}
public void addUser() {
User newUser = new User();
UserDAO uDAO = new UserDAO();
uDAO.createUser(newUser);
}
这是我的DAO类(我不能只粘贴createUser()
方法,因为它链接到类中的其他几个方法):
将用户同步到文件时,您需要关闭流:
try {
FileWriter out = new FileWriter(dataFile);
for (User u: userList) {
out.append(u.toString() + "\n");
}
out.close(); // <- new!
} catch (IOException e) {
e.printStackTrace();
}
试试看{
FileWriter out=新的FileWriter(数据文件);
for(用户u:userList){
out.append(u.toString()+“\n”);
}
out.close();//System.out.println在调试时始终是您的朋友。我不确定代码是否完整,是否有人能够给您一个可靠的答复。请将println放在每个有问题的方法的开头(或使用调试器并逐步检查每个区域)。可能现有用户检查出了问题?修改了您的用户类并向其中添加了toString方法,以便您可以使用此方法打印用户对象
像这样
//Create New user
User user=new User();
user.setUsername("XYZ User");
user.setPassword("****");
//print the created user
System.out.println(user.toString());
输出将是
User{username=XYZ User, password=***}
在User
类中添加了toString()
方法
package Server;
public class User {
private String username;
private String password;
public User() {
}
public void addUser() {
User newUser = new User();
UserDAO uDAO = new UserDAO();
uDAO.createUser(newUser);
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
//toString() method which will return the String representation of User
@Override
public String toString() {
return "User{" + "username=" + username + ", password=" + password + '}';
}
}
如果您只需要用户名,那么从返回toString()
method中删除密码和双字符文本,我本来打算这样做的,但是在尝试uDAO.createUser之后(这)
同样的问题仍然存在-文本文件中没有任何更改。是否有任何错误?在out.append()之前插入调试打印语句。在您知道之前,列表可能是空的。此登录服务是用于学习/学术目的还是用于实际程序?@chrylis它是用于学术目的。我已经尝试将打印语句添加到初始addUser()所涉及的每个方法中
方法,它们都已成功打印。这允许我将内容写入文件,但我不确定写入了什么。文本文件现在包含以下内容:服务器。User@712918d8.我的意图是向它写入用户名和密码;我知道我还没有分配密码,但它至少应该显示newUser
,对吗?@cosmo您需要在用户中实现toString()方法class@mc20我应该在何处实现此方法?我已将User类添加到问题中以供参考。这将导致更复杂的问题。toString(),顺便说一句,如果要以快速可读的格式将数据打印到文件中,您需要在用户类中重写它,这绝对是一个选项。当您要将数据从文件读回应用程序时,会出现问题。您应该在对象序列化时读取。