文件存储
文件存储是Android中最基本的一种数据存储方式,其与java中的文件存储类似,都是通过I/O流的形式把数据直接存储到文件中。
内部存储使用的是Context提法的openFileOutput()方法和openFileInput()方法,这两个方法能够返回进行读写操作的FileOutputStream和FileInputStream对象。 openFileOutput():用于打开应用程序中对应的输出流,将数据存储到指定的文件中 openFileInput():用于打开应用程序对应的输入流,读取指定文件的数据
他们的参数"name"表示文件名,"mode"表示文件的操作模式,也就是读写文件的方式
mode的值有四种:
- MODE_PRIVATE:该文件只能被当前程序读写
- MODE_APPEND:该文件的内容可以追加
- MODE_WORLD_READABLE:该文件的内容可以被其他程序读
- MODE_WORLD_WRITEABLE:该文件的内容可以被其他程序写
Android有一套自己的安全模型,默认清空下任何应用创建的文件都是私有的,其他程序无法访问。
创建工具类UserInfo
public class UserInfo {
public static boolean saveData(String name, String pwd, Context context){
String msg;
FileOutputStream fos=null;
try {
fos=context.openFileOutput("MyData.txt",Context.MODE_PRIVATE);
msg=name+";"+pwd;
fos.write(msg.getBytes());
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static Map<String,String> getData(Context context){
Map<String,String> map=new HashMap<String, String>();
FileInputStream fis=null;
try {
fis=context.openFileInput("MyData.txt");
byte[] bytes=new byte[fis.available()];
fis.read(bytes);
String msg=new String(bytes);
String[] info=msg.split(";");
map.put("name",info[0]);
map.put("pwd",info[1]);
return map;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
编写界面交互代码
public class MainActivity extends AppCompatActivity {
private EditText et_name,et_pwd;
private Button bt_save,bt_get;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_name=findViewById(R.id.et_name);
et_pwd=findViewById(R.id.et_pwd);
bt_get=findViewById(R.id.bt_get);
bt_save=findViewById(R.id.bt_save);
bt_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String saveName=et_name.getText().toString();
String savePwd=et_pwd.getText().toString();
if (UserInfo.saveData(saveName,savePwd,MainActivity.this))
Toast.makeText(MainActivity.this,"保存成功",Toast.LENGTH_SHORT).show();
}
});
bt_get.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> map=new HashMap<String, String>();
map=UserInfo.getData(MainActivity.this);
String findName=map.get("name");
String findPwd=map.get("pwd");
et_name.setText(findName);
et_pwd.setText(findPwd);
}
});
}
}
|