void editProfile(String usr,String pswd,String newFname,String newLname,String newUsername, String newPassword){
String filepath ="user.txt";
String tempFile = "temp.txt";
File oldFile = new File(filepath);
File newFile = new File(tempFile);
try
{
FileWriter fw = new FileWriter(tempFile,true);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter pw = new PrintWriter(bw);
RandomAccessFile raf = new RandomAccessFile(filepath,"rw");
for(int i=0;i<ln;i+=7){
String forUser = raf.readLine().substring(9);
String forPswd = raf.readLine().substring(9);
String role = raf.readLine().substring(5);
String balance = raf.readLine().substring(8);
String firstName = raf.readLine().substring(11);
String lastName = raf.readLine().substring(10);
if(usr.equals(forUser)&pswd.equals(forPswd)){
pw.println("Username:"+ newUsername+"\r\nPassword:"+ newPassword+"\r\nRole:"+role +"\r\nBalance:"+ balance+"\r\nFirst Name:"+newFname+"\r\nLast Name:"+ newLname);
JOptionPane.showMessageDialog(null,"Login Successful");
}else{
pw.println("Username:"+ forUser+"\r\nPassword:"+ forPswd+"\r\nRole:"+role +"\r\nBalance:"+ balance+"\r\nFirst Name:"+firstName+"\r\nLast Name:"+ lastName);
}
}
pw.flush();
pw.close();
oldFile.delete();
File dump = new File(filepath);
newFile.renameTo(dump);
}catch(IOException ex){
JOptionPane.showMessageDialog(null,"fail");
}
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
editProfile(username.getText(),password.getText(),newFname.getText(),newLname.getText(),newUsername.getText(),newPassword.getText());
}
我正在做一个页面,客户可以通过输入他们的旧用户名和密码,然后输入新用户名和密码来编辑他们的个人信息。我试图读取旧用户名和密码,以匹配文本文件中的数据,并更新新用户名和密码。
运行程序时没有响应,但我无法识别代码中的错误。有什么建议来修复这个错误吗?
1条答案
按热度按时间dxxyhpgq1#
raf.readLine()
每次读取一个新行,所以在for
循环中,你得到第一个完整的行,去掉前9个字符,这就是forUser
,然后你得到第二个完整的行,去掉前9个字符,这就是forPasswd
,这样一个用户记录就跨越了6行,并删除了一堆字符。我无法想象这是您的意图。调用
raf.readLine()
一次,将其存储在变量中:String line = raf.ReadLine()
,然后使用.substring
(您可能需要阅读javadoc,我不确定它是否执行了您认为的操作)、.indexOf
或可能使用.split
将该行剪切成它的组件片段。更常见的情况是,您会对数据库执行这样的操作,而绝不会仅仅接受错误(您捕获
ex
,然后忽略ex
。考虑到ex
包含了关于所发生的事情的所有信息,这不是一个好主意)。