用户注册后,可以登录,使用BufferedReader从文本文件中读取其详细信息。但是,我不确定如何使用BufferedReader逐行读取User对象的arraylist来检查文本文件中的详细信息并允许用户登录。
这就是我写的:
public class LoginJFrame extends javax.swing.JFrame {
ArrayList<User> users = new ArrayList<>();
public LoginJFrame() {
initComponents();
}
private void btnLoginActionPerformed(java.awt.event.ActionEvent evt) {
String nickname = edtNickname.getText();
String loginID = edtLoginID.getText();
String password = String.valueOf(edtPassword.getPassword());
try {
BufferedReader br = new BufferedReader(new FileReader("userinfo.txt"));
String readFile = br.readLine();
while (readFile != null) {
String[] splitString = readFile.split(",");
nickname = splitString[0];
loginID = splitString[1];
password = splitString[2];
User user = new User(nickname, loginID, password);
users.add(user);
readFile = br.readLine();
this.dispose();
ThreadJFrame threadPage = new ThreadJFrame();
threadPage.setVisible(true);
}
} catch (Exception e) {
e.printStackTrace();
}
}
我有另一个arrayList是字符串的唯一原因是因为我无法想办法让BufferedReader逐行读取我的User arrayList。有没有办法让BufferedReader读取arraylist类类型而不是字符串ArrayList?
User对象是一个单独的类,它使用字符串存储昵称,登录ID和密码。
public class User {
String nickname;
String loginID;
String password;
public User(String nickname, String loginID, String password) {
this.nickname = nickname;
this.loginID = loginID;
this.password = password;
}
public String getNickname() {
return nickname;
}
public String getLoginID() {
return loginID;
}
public String getPassword() {
return password;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public void setLoginID(String loginID) {
this.loginID = loginID;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" + "nickname= " + nickname + ", loginID= " + loginID + ", password= " + password + '}';
}
答案 0 :(得分:1)
currentLine = br.readLine();
while (currentLine != null) {
userstring.add(currentLine);
}
好吧,该代码只读取一行,因为您只调用一次readline()方法。
代码应该是这样的:
currentLine = br.readLine();
while (currentLine != null) {
userstring.add(currentLine);
currentLine = br.readLine();
}
由于User
的数据包含在一行中(因为您只保存了User类的toString()),您可能需要将数据解析为其各自的标记,这可能是通过使用{ {1}}方法。
当然,你的readToFile(...)方法确实无法做任何事情,因为你在本地定义了ArrayList,并且没有从方法中返回任何数据,所以你的其他人不能这样做访问数据。