我正在编写一个记事本应用程序,我正在create a password
弹出一个屏幕,直到您创建一个,然后从那时起log in
会弹出一个屏幕。
这是一些示例代码:
File myFile = new File(getFilesDir() + "pass.txt");
if (!myFile.exists()) // if "pass.txt" DOESN'T exist, make them create a password
{
try {
// this writes the password to the "pass.txt" file
// which is the one that is checked to exist.
// after it is written to, it should always exist.
FileOutputStream fos = openFileOutput("pass.txt", Context.MODE_PRIVATE);
fos.write(pass.getBytes());
// this writes the security question to a different file.
fos = openFileOutput("securityQ.txt", Context.MODE_PRIVATE);
fos.write(secQ.getBytes());
// this writes the security answer to a different file.
fos = openFileOutput("securityAnswer.txt", Context.MODE_PRIVATE);
fos.write(secAns.getBytes());
fos.close();
} catch(Exception e) {}
^ 这是一种方法。然后,在另一个我这样做:
try { // input the right password to the String data
char[] inputBuffer = new char[1024];
fIn = openFileInput("pass.txt");
isr = new InputStreamReader(fIn);
isr.read(inputBuffer);
data = new String(inputBuffer);
isr.close();
fIn.close();
}catch(IOException e){}
if (password.getText().toString().equals(data)) // if password is right, log in.
{
loggedin();
}
else // if the password entered is wrong, display the right one.
{
TextView scr = (TextView)findViewById(R.id.display);
scr.setText("." + data + "."+'\n'+"." + password.getText().toString() + ".");
}
问题是即使密码输入正确并且显示证明了用户也无法登录。
另一个问题是,每当我再次运行该应用程序时,它都会进入创建屏幕,这意味着它识别出该文件不存在(即使我刚刚写过它)。
我已经处理了整个项目的文件,它可以跟踪输入的文本,这样当你按下一个按钮时,它就会把文件读回给你。即使您关闭它,它也会跟踪您输入的内容。但由于某种原因,密码的东西不起作用。
这是发生了什么的图像(第一个.k.
是从文件中读取的数据"pass.txt"
,第二个.k.
是用户String
从 输入的数据EditText
):
登录问题的解决方法:
只好简单地使用.trim()
密码用户输入的方法。