当我尝试在MainActivity中读取文件时,它看起来是空白的,而其他活动可以读取创建的文件

时间:2018-06-11 18:42:27

标签: java android backend mobile-application

问题 - 当我尝试读取文件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();
}
}

1 个答案:

答案 0 :(得分:0)

String Collected = null;更改为StringBuilder sb = new StringBuilder();
然后Collected = new String(a);sb.append(new String(a));然后将sb.toString()传递给Toast.makeTest()方法