直接上代码:
public class MainActivity
extends AppCompatActivity
{
private String mNum;
private String mPw;
private TextView mTv;
private User mUser;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
mNum = "616368996";
mPw = "123abc";
String base64pw = Base64.encodeToString(mPw.getBytes(), Base64.DEFAULT);
mTv = (TextView) findViewById(R.id.tv);
mUser = new User();
mUser.setNum(mNum);
mUser.setPw(base64pw);
}
public void clickSave(View view) {
saveObject("userinfo",mUser);
Toast.makeText(this, "存储数据到本地成功", Toast.LENGTH_SHORT)
.show();
}
public void clickShow(View view){
//得到保存于本地路径的对象
User saveinfo = (User) getObject("userinfo");
if (null == saveinfo){
Toast.makeText(this, "请重新登录: ", Toast.LENGTH_SHORT)
.show();
}else{
String pw = saveinfo.getPw();
//解密
String decodeString = new String(Base64.decode(pw.getBytes(), Base64.DEFAULT));
Toast.makeText(this, "读取数据成功: "+decodeString, Toast.LENGTH_SHORT)
.show();
}
}
public void cleanData(View view){
deleteFile("userinfo");
Toast.makeText(this, "清除数据成功", Toast.LENGTH_SHORT)
.show();
}
private void saveObject(String name,Object object){
FileOutputStream fos = null;
ObjectOutputStream oos = null;
try {
fos = this.openFileOutput(name, MODE_PRIVATE);
oos = new ObjectOutputStream(fos);
oos.writeObject(object);
} catch (Exception e) {
e.printStackTrace();
//这里是保存文件产生异常
} finally {
if (fos != null){
try {
fos.close();
} catch (IOException e) {
//fos流关闭异常
e.printStackTrace();
}
}
if (oos != null){
try {
oos.close();
} catch (IOException e) {
//oos流关闭异常
e.printStackTrace();
}
}
}
}
private Object getObject(String name){
FileInputStream fis = null;
ObjectInputStream ois = null;
try {
fis = this.openFileInput(name);
ois = new ObjectInputStream(fis);
return ois.readObject();
} catch (Exception e) {
e.printStackTrace();
//这里是读取文件产生异常
} finally {
if (fis != null){
try {
fis.close();
} catch (IOException e) {
//fis流关闭异常
e.printStackTrace();
}
}
if (ois != null){
try {
ois.close();
} catch (IOException e) {
//ois流关闭异常
e.printStackTrace();
}
}
}
//读取产生异常,返回null
return null;
}
}
public class User implements Serializable {//要继承,实现序列化
private static final String TAG = "User";
private String num ;
private String pw ;
public String getNum() {
return num;
}
public void setNum(String num) {
this.num = num;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
}