问题 - 当我尝试读取文件LoginCredentials.txt时,由于某种原因它出来是空的,其他活动能够读取它但不能读取MainActivity。可能是因为我在MainCctivity的onCreate下使用的CheckFirstTimeRun代码,但我不确定。
这是我正在创建文件的CreateUserID.class,
public class CreateUserID extends AppCompatActivity {
private EditText usernameField;
private EditText passwordField;
public String userid;
public String userpass;
private final String File_Name = "LoginCredentials.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_user_id);
usernameField = (EditText)findViewById(R.id.Username);
passwordField = (EditText)findViewById(R.id.Password);
}
public void MakeAccount(View v) throws IOException {
userid = usernameField.getText().toString();
userpass = passwordField.getText().toString();
String x=null;
x=userid+userpass;
FileOutputStream fos = null;
try {
fos = openFileOutput(File_Name,MODE_PRIVATE);
fos.write(x.getBytes());
} catch(FileNotFoundException e) {
e.printStackTrace();
} catch(Exception e) {
e.printStackTrace();
}
finish();
}
}
这是MainActivity.class,它应该读取文件。
public class MainActivity extends AppCompatActivity {
protected EditText Authentication_Username;
protected EditText Authentication_Password;
protected String File_Name = "LoginCredentials.txt";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SharedPreferences wmbPreference = PreferenceManager
.getDefaultSharedPreferences(this);
boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
Intent k = new Intent(this,CreateUserID.class);
startActivity(k);
SharedPreferences.Editor editor = wmbPreference.edit();
editor.putBoolean("FIRSTRUN", false);
editor.commit();
}
}
public void Verify_User(View v) {
Authentication_Username=(EditText)findViewById(R.id.Username);
Authentication_Password=(EditText)findViewById(R.id.Password);
String Match_Username = Authentication_Username.getText().toString();
String Match_Password = Authentication_Password.getText().toString();
String Collected = null;
FileInputStream fis;
try {
fis = new FileInputStream(File_Name);
byte[] a = new byte[fis.available()];
while(fis.read(a)!=-1) {
Collected = new String(a);
}
} catch(Exception e) {
e.printStackTrace();
}
Toast.makeText(MainActivity.this,Collected,Toast.LENGTH_LONG).show();
}
}
答案 0 :(得分:0)
将String Collected = null;
更改为StringBuilder sb = new StringBuilder();
然后Collected = new String(a);
到sb.append(new String(a));
然后将sb.toString()
传递给Toast.makeTest()
方法