但这处理文件路径的时候,我们都是『写死的』
data/data/com.example.dev.readwritefile/info.txt
我们需要优化这部分代码,使用API来获取存储的目录。
//要读取的文件
File f = new File(getFilesDir(),"info.txt");
案列全部代码:
package com.example.dev.readwritefile;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//读取用户数据
readAccount();
}
/**
* 从内部存储读取用户数据
*/
public void readAccount(){
//要读取的文件
File f = new File(getFilesDir(),"info.txt");
if (f.exists()){ //判断文件是否存在
try {
FileInputStream fis = new FileInputStream(f);
//把字节流转换成为字符串流
BufferedReader buffer = new BufferedReader(new InputStreamReader(fis));
//读取txt文件里的用户名和密码
String text = buffer.readLine();
String[] info = text.split(":");
//数据显示到界面上
EditText et_name = (EditText)findViewById(R.id.et_name);
EditText et_pwd = (EditText)findViewById(R.id.et_pwd);
et_name.setText(info[0]);
et_pwd.setText(info[1]);
}catch (Exception e){
e.printStackTrace();
}
}
}
/**
* 登录操作
* @param v View对象
*/
public void login(View v){
//获取输入的用户名和密码
EditText et_name = (EditText)findViewById(R.id.et_name);
EditText et_pwd = (EditText)findViewById(R.id.et_pwd);
String name = et_name.getText().toString();
String pwd = et_pwd.getText().toString();
//判断有无勾选『记住密码』
CheckBox box = (CheckBox)findViewById(R.id.Rememb);
if (box.isChecked()){
//如果勾选,就把帐号和密码写入文件
File f = new File(getFilesDir(),"info.txt");
/*
* data/data/com.example.dev.readwritefile
* com.example.dev.readwritefile是此项目包名
* */
FileOutputStream fos;
try {
fos = new FileOutputStream(f);
fos.write((name+":"+pwd).getBytes());
fos.close();
}catch (Exception e){
e.printStackTrace();
}
}
//Toast对话框提示
Toast.makeText(this,"登录成功",Toast.LENGTH_SHORT).show();
}
}