netbeans 如何在文本文件中查找特定数据并更新数据

vx6bjr1n  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(217)
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());
    }

我正在做一个页面,客户可以通过输入他们的旧用户名和密码,然后输入新用户名和密码来编辑他们的个人信息。我试图读取旧用户名和密码,以匹配文本文件中的数据,并更新新用户名和密码。
运行程序时没有响应,但我无法识别代码中的错误。有什么建议来修复这个错误吗?

dxxyhpgq

dxxyhpgq1#

raf.readLine()每次读取一个新行,所以在for循环中,你得到第一个完整的行,去掉前9个字符,这就是forUser,然后你得到第二个完整的行,去掉前9个字符,这就是forPasswd,这样一个用户记录就跨越了6行,并删除了一堆字符。我无法想象这是您的意图。
调用raf.readLine()一次,将其存储在变量中:String line = raf.ReadLine(),然后使用.substring(您可能需要阅读javadoc,我不确定它是否执行了您认为的操作)、.indexOf或可能使用.split将该行剪切成它的组件片段。
更常见的情况是,您会对数据库执行这样的操作,而绝不会仅仅接受错误(您捕获ex,然后忽略ex。考虑到ex包含了关于所发生的事情的所有信息,这不是一个好主意)。

相关问题