java txt文件作为数据库

vddsk6oq  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(635)

我试图使用一个文本文件作为数据库,我遇到了一个问题。问题是,当我在文本文件中写入用户信息时,当我添加第二个用户时,它不会写入下一行。它只是覆盖了旧的。如何添加writetonextline之类的东西?

public void addAdmin(String adminName, String adminSurName, String adminUserName, String adminPassword) throws IOException {
    BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\cemon\\IdeaProjects\\Library\\src\\database\\AdminUserData.txt"));
    writer.write(adminName + " " + adminSurName);
    writer.newLine();
    writer.write(adminUserName + " " + adminPassword);
    writer.newLine();
    writer.close();
}
mrphzbgm

mrphzbgm1#

坏主意。你怎么知道你没有添加一个重复的用户?
如果您想要一个简单的文本文件作为数据库,请在启动时将该文本文件加载到内存中,例如作为数据库 Map<String, User> 键入者 adminUserName ,并在其中添加新用户。每当值更改时,将所有用户写回文本文件。
这也确保了(将来)像“remove user”这样的操作能够正常工作。
建议实施 UserStore 使用建议的 Map 作为一个字段,对程序的其余部分隐藏(封装)实现。

wko9yo5t

wko9yo5t2#

要启用吗 append 中的模式 FileWriter . 这意味着当你写一个新行,而不是覆盖,它会添加另一行。
您的代码应该是:

public void addAdmin(String adminName, String adminSurName, String adminUserName, String adminPassword) throws IOException {
    BufferedWriter writer = new BufferedWriter(new FileWriter("C:\\Users\\cemon\\IdeaProjects\\Library\\src\\database\\AdminUserData.txt", true));
    writer.write(adminName + " " + adminSurName);
    writer.newLine();
    writer.write(adminUserName + " " + adminPassword);
    writer.newLine();
    writer.close();
}

相关问题