gpt4 book ai didi

java - 在java中用文本文件读写数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:11:13 25 4
gpt4 key购买 nike

我正在尝试创建一个命令,允许登录的用户编辑他们的用户名和密码,然后保存更新的详细信息。目前,更新细节似乎有效,但当我将细节写入新文件时,旧文件中的所有其他数据(其他用户细节)都被删除,只有当前用户更新的细节出现在文件中。这是我的代码:

public class UpdateDetailsCommand implements Command{
private BufferedWriter out;
private BufferedReader in;
private MsgSvrConnection conn;

public void execute() throws IOException
{

if (conn.getCurrentUser() != null) {

String username1 = conn.getCurrentUser();
String password1 = conn.getServer().getUserPassword(username1);

BufferedReader fr = new BufferedReader(new FileReader("pwd.txt"));
PrintWriter fw = new PrintWriter(new FileWriter("pwd.txt", true));
String line;

String username = in.readLine();
String password = in.readLine();

if (password != null && username != null) {

while ((line = fr.readLine()) != null) {
if (line.contains(username1) && line.contains(password1) ){
line = line.replace(username1, username);
line = line.replace(password1, password);
fw.println(line);
}
}
fr.close();
fw.close();


out.write("done");
out.flush();
}

}

}

public UpdateDetailsCommand(BufferedReader in, BufferedWriter out,
MsgSvrConnection serverConn)
{
this.out = out;
this.in = in;
this.conn = serverConn;

}

我猜我读写文件的方式不太正确,但我不确定我在这里做错了什么。

最佳答案

如果要写入文本文件(行结构),请使用 PrintWriter。

PrintWriter fw = new PrintWriter( new FileWriter("temp_pwd.txt", true) );

while 循环不能包含 close() - 这会终止一切。

while ((line = fr.readLine()) != null) {
if (line.contains(username1))
line = line.replace(username1, username);
if (line.contains(password1))
line = line.replace(password1, password);
fw.println(line);
} // close while block here

fr.close();
fw.close();

您还应该确保只更改一行。密码出现不止一次的可能性很小,但这是可能的。

   if (line.contains(username1) && line.contains(password1) ){
line = line.replace(username1, username);
line = line.replace(password1, password);
}

此外,contains() 不是测试的好方法。如果你只有一个用户怎么办

   josephus,Oki987e3

还有一个

   joseph,Oki987e3

然后约瑟夫更改了他的用户名和密码??

关于java - 在java中用文本文件读写数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27969592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com