使用Scanner从文件中读取对象

时间:2013-08-13 17:46:39

标签: java java.util.scanner file-handling

我试图使用扫描仪从文本文件中读取对象,但我的问题是我无法访问对象的元素。这意味着我在对象中存储了用户名和密码,我想用另一个用户名和密码进行检查,用户将在运行时提供这些用户名和密码。

这就是我所做的:

 //writing object to the file using printwriter 
    public void createLogin(String username,String password){

        libraryLogin_class logins=new libraryLogin_class(username,password);

        try{
            PrintWriter write=new PrintWriter("login.txt");
            write.print(logins);

           write.close();

        }catch(Exception e){}

    }

//这个方法目前已停留在此方法

,但尚未完全实现
     public void checkLogin(String userName,String password)throws FileNotFoundException{

       File read=new File("login.txt");

       Scanner readFile=new Scanner(read);
     String loginObject;


      while(readFile.hasNext()){

          loginObject=(readFile.nextLine());

      //not implemented

      }


//class which creates an object with the default username and password

   public void login(){

        String username="shehan";
        String password="123";

        createLogin_class user=new createLogin_class();

        user.createLogin(username, password); //calls the creatLogin method and pass   the parameters

    }

所以现在我的问题是如何使用loginObject来检查对象的用户名是否等于用户提供的用户名?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

PrintWriter具有print(Object)方法

public void print(Object obj) {
    write(String.valueOf(obj));
}

所以打电话

write.print(logins);

会将logins.toString()的值写入您的文本文件。你需要控制那种格式。因此,如果您的toString()方法是

public String toString() {
    return username + "," + password;
}

假设您有字段usernamepassword,则应将其视为

while(readFile.hasNext()){
    libraryLogin_class login = new libraryLogin_class();

    loginObject = readFile.nextLine();
    String[] values = loginObject.split(",");
    login.setUsername(values[0]);
    login.setPassword(values[1]);
    // use login
} 

您显然希望先验证您正在阅读的内容。