Java 注册时检查文本文件中是否存在用户
在为注册和登录系统创建注册类时,它成功地将用户添加到文本文件中。我要问的是如何让程序检查文本文件中是否已经存在用户的登录ID 文本文件的内容:Java 注册时检查文本文件中是否存在用户,java,swing,bufferedwriter,Java,Swing,Bufferedwriter,在为注册和登录系统创建注册类时,它成功地将用户添加到文本文件中。我要问的是如何让程序检查文本文件中是否已经存在用户的登录ID 文本文件的内容: User{nickname= Barry, loginID= baz15, password= dan} 当输入相同的注册详细信息时,它会再次添加此信息。如何使其不再将此项添加到文件中,而是显示一个JOptionPane 我有一个数组列表,它引用用户类来检查文本文件中是否存在用户。这是我目前的代码: public class Registration
User{nickname= Barry, loginID= baz15, password= dan}
当输入相同的注册详细信息时,它会再次添加此信息。如何使其不再将此项添加到文件中,而是显示一个JOptionPane
我有一个数组列表,它引用用户类来检查文本文件中是否存在用户。这是我目前的代码:
public class RegistrationJFrame extends javax.swing.JFrame {
ArrayList<User> users = new ArrayList<>();
public RegistrationJFrame() {
initComponents();
lblErrorMessage.setVisible(false);
}
private void btnRegisterActionPerformed(java.awt.event.ActionEvent evt) {
String nickname = edtNickname.getText();
String loginID = edtLoginID.getText();
String password = String.valueOf(edtPassword.getPassword());
String confirmPassword = String.valueOf(edtReenterPassword.getPassword());
if (!password.equals(confirmPassword)) {
lblErrorMessage.setText("Passwords do not match");
}
if (nickname.equals("") || loginID.equals("") || password.equals("")) {
lblErrorMessage.setText("You must fill in the text fields");
}
for (int i = 0; i < users.size(); i++) {
if (users.get(i).getLoginID().equals(loginID)) {
JOptionPane.showMessageDialog(null, "User exists in file");
} else {
JOptionPane.showMessageDialog(null, "User does not exist");
}
}
try {
User user = new User(nickname, loginID, password);
users.add(user);
File filename = new File("userinfo.txt");
if (!filename.exists()) {
filename.createNewFile();
}
FileWriter fw = new FileWriter(filename, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(user.toString());
bw.newLine();
bw.close();
} catch (Exception e) {
System.out.println("");
}
}
}
公共类注册JFrame扩展了javax.swing.JFrame{
ArrayList用户=新建ArrayList();
公共注册jframe(){
初始化组件();
lblErrorMessage.setVisible(false);
}
私有void btnRegisterActionPerformed(java.awt.event.ActionEvent evt){
字符串昵称=edtNickname.getText();
字符串loginID=edtLoginID.getText();
String password=String.valueOf(edtPassword.getPassword());
String confirmPassword=String.valueOf(edtrenterpassword.getPassword());
如果(!password.equals(confirmPassword)){
lblErrorMessage.setText(“密码不匹配”);
}
if(昵称.equals(“”)| | loginID.equals(“”)| |密码.equals(“”){
lblErrorMessage.setText(“必须填写文本字段”);
}
对于(int i=0;i
如果我理解你的意思是正确的,我会用另一种方法:
public class RegistrationJFrame extends javax.swing.JFrame {
ArrayList<User> users = new ArrayList<>();
public RegistrationJFrame() {
initComponents();
lblErrorMessage.setVisible(false);
}
private void btnRegisterActionPerformed(java.awt.event.ActionEvent evt) {
String nickname = edtNickname.getText();
String loginID = edtLoginID.getText();
String password = String.valueOf(edtPassword.getPassword());
String confirmPassword = String.valueOf(edtReenterPassword.getPassword());
if (!password.equals(confirmPassword)) {
lblErrorMessage.setText("Passwords do not match");
}
if (nickname.equals("") || loginID.equals("") || password.equals("")) {
lblErrorMessage.setText("You must fill in the text fields");
}
for (int i = 0; i < users.size(); i++) {
if (users.get(i).getLoginID().equals(loginID)) {
JOptionPane.showMessageDialog(null, "User exists in file");
} else {
JOptionPane.showMessageDialog(null, "User does not exist");
User user = new User(nickname, loginID, password);
users.add(user);
saveUser(user);
}
}
}
private void saveUser(User user) {
try {
File filename = new File("userinfo.txt");
if (!filename.exists()) {
filename.createNewFile();
}
FileWriter fw = new FileWriter(filename, true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(user.toString());
bw.newLine();
bw.close();
} catch (Exception e) {
System.out.println("");
}
}
}
公共类注册JFrame扩展了javax.swing.JFrame{
ArrayList用户=新建ArrayList();
公共注册jframe(){
初始化组件();
lblErrorMessage.setVisible(false);
}
私有void btnRegisterActionPerformed(java.awt.event.ActionEvent evt){
字符串昵称=edtNickname.getText();
字符串loginID=edtLoginID.getText();
String password=String.valueOf(edtPassword.getPassword());
String confirmPassword=String.valueOf(edtrenterpassword.getPassword());
如果(!password.equals(confirmPassword)){
lblErrorMessage.setText(“密码不匹配”);
}
if(昵称.equals(“”)| | loginID.equals(“”)| |密码.equals(“”){
lblErrorMessage.setText(“必须填写文本字段”);
}
对于(int i=0;i
对于您的文件,使用json文件可能会更好。如果要向用户添加更多信息,可能会更容易 一个简单的修复方法是将用户重写到文件中,而不是将新用户附加到文件中。这意味着您只需在列表中循环,并在每次创建新用户时将所有用户重写为文件。您可以像这样创建一个saveToFile()方法并调用它
private void saveToFile()
{
try{
File filename = new File("userinfo.txt");
if (!filename.exists()) {
filename.createNewFile();
}
FileWriter fw = new FileWriter(filename, false); //false so you don't append and overwrite
BufferedWriter bw = new BufferedWriter(fw);
//now loop your arraylist of users to resave them to your file
for(User currUser : users)
{
bw.write(currUser.toString());
bw.newLine();
}
bw.close();
}catch (Exception e)
{
e.printStackTrace();
}
}
接下来,您必须确定何时可以添加用户并保存它。尝试在btnRegistrationPerformed方法中使用布尔值,如下所示
private void btnRegisterActionPerformed(java.awt.event.ActionEvent evt) {
String nickname = edtNickname.getText();
String loginID = edtLoginID.getText();
String password = String.valueOf(edtPassword.getPassword());
String confirmPassword = String.valueOf(edtReenterPassword.getPassword());
if (!password.equals(confirmPassword)) {
lblErrorMessage.setText("Passwords do not match");
}
if (nickname.equals("") || loginID.equals("") || password.equals("")) {
lblErrorMessage.setText("You must fill in the text fields");
}
boolean addUser = true;
for (int i = 0; i < users.size(); i++) {
if (users.get(i).getLoginID().equals(loginID)) {
JOptionPane.showMessageDialog(null, "User exists in file");
addUser = false;
break;//no need to keep checking so break out of the for loop
} else {
JOptionPane.showMessageDialog(null, "User does not exist");
}
}
if(addUser)
{
User user = new User(nickname, loginID, password);
users.add(user);
//now save the contents of the list to the file
saveToFile();
}
}
private void btnRegisterActionPerformed(java.awt.event.ActionEvent evt){
字符串昵称=edtNickname.getText();
字符串loginID=edtLoginID.getText();
String password=String.valueOf(edtPassword.getPassword());
String confirmPassword=String.valueOf(edtrenterpassword.getPassword());
如果(!password.equals(confirmPassword)){
lblErrorMessage.setText(“密码不匹配”);
}
if(昵称.equals(“”)| | loginID.equals(“”)| |密码.equals(“”){
lblErrorMessage.setText(“必须填写文本字段”);
}
布尔addUser=true;
对于(int i=0;i
您当前总是将用户添加到文件中,这是不正确的。我们使用布尔值来确定用户是否不存在,只有在找不到用户时,我们才会添加用户并保存到文件中