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

객체의 요소를 읽으려면 직렬화해야합니까? 나는 libraryLogin_class에서 모든 준비가 완료되고 선언 된 get 및 set 메소드를 갖습니다. –

+0

@boxed__l 자바 직렬화 문제가 아닙니다. 일반적인 직렬화 문제입니다. 링크는 위키에 있습니다. 그의 객체는'txt' 파일에서 어떻게 직렬화됩니까? ',','|'등으로 구분합니다. –

+0

적어도 개념적으로는 직렬화 문제처럼 보입니다. Sheah, 로그인 클래스에 대해 정의 된 tostring() 메소드가 있습니까? 직렬화 해제 방법 (즉, 문자열을 받아서 로그인 객체를 다시 작성하는 방법)이 필요합니다. 또는 약간 다른 압박을 가긴하지만 Java가이를 도와 줄 수 있습니다. 이것은 좋은 튜토리얼입니다 http://www.tutorialspoint.com/java/java_serialization.htm – Taylor

답변

1

PrintWriter 그래서 텍스트 파일에 logins.toString()의 값을 기록합니다

write.print(logins); 

를 호출하는 등

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

print(Object) 방법이있다. 해당 형식을 제어해야합니다. 당신의 toString() 방법은 당신이 필드 usernamepassword이 가정

public String toString() { 
    return 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

감사합니다 또한 serialize를 사용하여 노력하고 그것은 효과. 도움을 주셔서 감사합니다 :) –

+0

@ Shehan.W 확실한 것! –