![](/img/trans.png)
[英]Spring Boot JpaRepository save call doesn't seem to be doing anything
[英]Trying to write to a .DAT file but doesn't seem to be doing anything?
我在另一个应用程序中使用了此代码,以将名称和高分写入游戏文件。 现在,我正在使用此代码从.DAT文件获取名称和密码,并能够添加新的用户和密码。 这是.DAT文件。
michael123
speaker123
katherine123
motor123
username
password
这是代码。 读取文件可以正常工作,但是写入文件完全没有任何作用,我不确定为什么。
InputStream file;
BufferedReader fileStream;
FileWriter fileWriter;
BufferedWriter fileWrite;
String temp = "";
int users = 0;
public void readUserInfo() throws IOException {
try {
file = Board.class.getResourceAsStream("users.DAT");
fileStream = new BufferedReader(new InputStreamReader(file));
} catch (Exception e) {
System.out.println("File not found");
}
for (int i = 0; i < users; i++) {
temp = fileStream.readLine();
Board.username[i] = temp.trim();
temp = fileStream.readLine();
Board.password[i] = temp.trim();
}
//Close
fileStream.close();
file.close();
}
public void addUser() throws IOException {
fileWriter = new FileWriter(Board.class.getResource("users.DAT").getFile(),true);
fileWrite = new BufferedWriter(fileWriter);
System.out.println("Users : " + users);
//Skip already created users
for (int i = 0; i < users; i++) {
fileWrite.newLine();
fileWrite.append(Board.username[i]);
fileWrite.newLine();
fileWrite.append(Board.password[i]);
}
System.out.println("Adding" + Board.username[users] + " : " + Board.password[users]);
//Add user
fileWrite.newLine();
fileWrite.append(Board.username[users]);
fileWrite.newLine();
fileWrite.append(Board.password[users]);
//Close
fileWrite.close();
System.out.println("Closed fileWrite");
}
我正在使用netbeans。 从中读取的文件与所有其他类在同一个程序包中。
在阅读中,您使用以下file = Board.class.getResourceAsStream("users.DAT");
在您的写作中,您只需创建一个新File("users.DAT")
,将addUser()
更改为
public void addUser() throws IOException {
fileWriter = new FileWriter(Board.class.getResource("users.DAT").getFile());
....
}
编辑 :问题是在写入过程中您没有像以前一样检索相同的文件。 我会添加这种方法
public File getUserDataFile() {
return new File(Board.class.getResource("").getFile(), "users.DATA");
}
// then use it like this
new FileWriter(getUserDataFile());
// and
new BufferedReader(new InputStreamReader(getUserDataFile()));
然后在您想要读写文件时访问它。 问题是如果您的文件不存在, Board.class.getResourceAsStream("users.DAT")
将返回null。
也许您已经将jar打包了一些状态的文件users.DAT
(一组定义的用户),当您从类路径中读取它们时,您从创建jar的那一刻起只会看到用户。 然后,编写将转到另一个文件。
您也应该从文件系统中读取用户。
检查应用程序的工作目录,应该有包含添加用户的正确文件。
同样,无需在每次添加用户时一遍又一遍地复制所有用户,只需在追加模式下打开文件
fileWriter = new FileWriter(new File("users.DAT"), true);
除非您希望能够删除用户,否则在这种情况下,请将所有内容保留在内存中,并在退出程序时或通过保存操作显式保存。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.