【问题标题】:storing and retriving multiple strings to a single file将多个字符串存储和检索到单个文件
【发布时间】:2014-11-29 20:16:01
【问题描述】:

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

 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()。

【问题讨论】:

    标签: android eclipse android-activity


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢朋友。删除字符串生成器对我有用。我的代码现在运行良好。
    【解决方案2】:

    使用temp1.equals(PuserName.toString()) 代替==。如果您使用==,则您正在比较引用,并且使用equals方法比较值。

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

    【讨论】:

    • 我尝试使用 .equals 但错误仍然存​​在。我似乎找不到它是什么。
    • 尝试不使用 StringBuilder。只需使用:temp1 = bufferedReader.readLine(与 temp2 相同)。在您的 if 中使用:temp1.equals(PuserName.toString() && temp2.equals(Ppass.toString())。如果仍然无法正常工作,可能是您的 toString 方法没有很好地实现。
    猜你喜欢
    • 2015-04-15
    • 1970-01-01
    • 2013-08-12
    • 2012-03-27
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-28
    • 2010-11-10
    相关资源
    最近更新 更多