Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DAO类未写入文件_Java_Javafx_Interface_Dao_File Writing - Fatal编程技术网

Java 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

我试图通过使用模型和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.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(),顺便说一句,如果要以快速可读的格式将数据打印到文件中,您需要在用户类中重写它,这绝对是一个选项。当您要将数据从文件读回应用程序时,会出现问题。您应该在对象序列化时读取。