存储和检索多个字符串到一个文件

时间:2014-11-29 20:16:02

标签: android eclipse android-activity

我尝试将用户名和密码(两个字符串)存储到同一个文件中。存储部分对我来说效果很好,但在检索部分似乎有一些错误。我似乎无法找到解决方法。有人可以帮助我...我的代码存储和检索字符串到文件如下:

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

    }

每次在编写非常用户名和密码后执行此代码时,只执行startWrongway(),即使输入正确的用户名和密码,也不会执行startPocket()。

2 个答案:

答案 0 :(得分:1)

你在比较字符串时犯了一些基本错误。您正在使用' ==',您应该使用' equals()'。几分钟后,我将检查代码中是否还有其他问题。

检查完后还有1个问题。根本不需要StringBuilder。由于使用不正确,temp2最终是登录和密码的总和。修复此+之前说的等于(但没有" \ n"内部)应该使你的代码工作。

答案 1 :(得分:0)

使用temp1.equals(PuserName.toString())代替==。如果您使用==进行比较参考资料,并使用方法equals进行比较,则会比较该值。

此外,您不必与PuserName.toString()+"\n"进行比较,因为方法readLine不包含任何行终止字符。