我尝试将用户名和密码(两个字符串)存储到同一个文件中。存储部分对我来说效果很好,但在检索部分似乎有一些错误。我似乎无法找到解决方法。有人可以帮助我...我的代码存储和检索字符串到文件如下:
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()。
答案 0 :(得分:1)
你在比较字符串时犯了一些基本错误。您正在使用' ==',您应该使用' equals()'。几分钟后,我将检查代码中是否还有其他问题。
检查完后还有1个问题。根本不需要StringBuilder。由于使用不正确,temp2最终是登录和密码的总和。修复此+之前说的等于(但没有" \ n"内部)应该使你的代码工作。
答案 1 :(得分:0)
使用temp1.equals(PuserName.toString())
代替==
。如果您使用==
进行比较参考资料,并使用方法equals
进行比较,则会比较该值。
此外,您不必与PuserName.toString()+"\n"
进行比较,因为方法readLine
不包含任何行终止字符。