2014-11-29 3 views
-1

Я попытался сохранить имя пользователя и пароль (два строки) в один и тот же файл. Часть хранения работала хорошо для меня, но, казалось, была некоторая ошибка в извлекающей части. Кажется, я не знаю, как его решить. Может кто-нибудь, пожалуйста, помогите мне ... Мой коду для хранения и извлечения строки в файл приведен ниже:сохранение и извлечение нескольких строк в один файл

public void startApp() 
    { 

    try{ 
     File setFile=new   
     File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/code.rhn"); 
     System.out.println(setFile.getAbsolutePath()); 
     if(!setFile.exists()){ 

      //writing data to file 
       FileOutputStream fOut = new FileOutputStream(setFile); 
       OutputStreamWriter myOutWriter = new OutputStreamWriter(fOut); 
       myOutWriter.append(PuserName.toString()); 
       myOutWriter.append("\n"); 
       myOutWriter.append(Ppass.toString()); 
       myOutWriter.close(); 
       fOut.close(); 
       startPocket(); 

      } 
    else 
      { 


     //reading two strings from file 
       FileInputStream fin=new FileInputStream(setFile); 
       InputStreamReader isr = new InputStreamReader(fin); 
       BufferedReader bufferedReader = new BufferedReader(isr); 
       String receiveString1 = ""; 
       String receiveString2 = ""; 
       StringBuilder stringBuilder = new StringBuilder(); 
     //storing string1 to temp1  
       receiveString1 = bufferedReader.readLine(); 
       stringBuilder.append(receiveString1); 
       temp1 = stringBuilder.toString(); 
     //storing string2 to temp2      
       receiveString2 = bufferedReader.readLine(); 
       stringBuilder.append(receiveString2); 
       temp2=stringBuilder.toString(); 
       fin.close(); 


     // checking for identical username and password      
       if ((temp1== (PuserName.toString()+"\n"))&&(temp2==Ppass.toString())) 
         { 
          startPocket(); 
         } 
        else 
         startWrongWay(); 

     } 
     }catch(Exception e){ 
      Toast.makeText(this, "exception occured", Toast.LENGTH_LONG).show(); 
     } 

    } 

Каждый раз, когда я выполнить этот код после написания inetial имени пользователя и пароля, только startWrongway() выполняется и startPocket() никогда не выполняется даже при вводе правильного имени пользователя и пароля.

ответ

1

Вы делаете фундаментальную ошибку при сравнении строк. Вы используете '==', где вы должны использовать 'equals()'. Через несколько минут я проверю, есть ли у вас другие проблемы в коде.

И после проверки у вас есть еще одна проблема. StringBuilder вообще не нужен. Из-за неправильного его использования temp2 - это, наконец, сумма логина и пароля. Фиксация этого + создания ранее упомянутых равных (но без «\ n» внутри) должна заставить ваш код работать.

+0

Спасибо большое друг. удаление строки построитель работал для меня. Мой код теперь работает хорошо. –

0

Использовать temp1.equals(PuserName.toString()) вместо ==. Если вы используете ==, вы сравниваете ссылки, а с помощью метода equals вы сравниваете значение.

Кроме того, вам не нужно сравнивать с PuserName.toString()+"\n", потому что метод readLine не содержит символов окончания строки.

+0

Я пробовал использовать .equals, но ошибка по-прежнему сохраняется. Кажется, я не знаю, что это такое. –

+0

Также попытался удалить + "\ n", но все еще не работает –

+0

Попробуйте без StringBuilder. Просто используйте: temp1 = bufferedReader.readLine' (то же самое с temp2). И в вашем случае if: temp1.equals (PuserName.toString() && temp2.equals (Ppass.toString()) '. Если все еще не работает, возможно, ваши методы toString не реализованы. – DavidGSola

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