2013-08-13 2 views
0

Я пытаюсь прочитать объект из текстового файла с помощью сканера, но моя проблема в том, что я не могу получить доступ к элементам объекта. Значение Я сохранил имя пользователя и пароль в объекте, и я хочу проверить его с другим именем пользователя и паролем, который пользователь предоставит во время выполнения.Использование сканера для чтения объекта из файла

Вот что я сделал:

//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 проверить, совпадает ли имя пользователя с именем пользователя, которое пользователь предоставляет?

Спасибо за ваше время.

+0

Нужно ли сериализовать, чтобы прочитать элементы объекта? У меня есть методы get и set, объявленные всеми готовыми в библиотекеLogin_class. –

+0

@boxed__l Это не проблема сериализации Java. Это общая проблема сериализации. Ссылка на вики. Как его объект сериализуется в файле 'txt'? Разделяется '' '' '' '' 'и т. Д. –

+0

Для меня это выглядит как сериализация, по крайней мере концептуально. Кажется, он не использует материал для сериализации Java (может быть, часть проблемы?) Шехан, у вас есть метод tostring(), определенный для вашего класса входа? Вам также понадобится метод десериализации (т. Е. Метод, который принимает строку и анализирует ее для восстановления объекта входа). В качестве альтернативы, Java может помочь вам в этом, хотя и с помощью немного другого подхода. Это хороший учебник http://www.tutorialspoint.com/java/java_serialization.htm – Taylor

ответ

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; 
} 

если у вас есть поля username и password, вы должны прочитать его как

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 
} 

Вы, очевидно, хотите, чтобы подтвердить, что вы читаете в первую очередь.

+0

Спасибо, я также попробовал использовать сериализацию, и это сработало. Спасибо за помощь :) –

+0

@ Shehan.W Уверенная вещь! –

Смежные вопросы