一,sp存储
SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。
它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。
其存储位置在/data/data/<包名>/shared_prefs目录下。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。
SharedPreferences: 对应sp文件的接口
context. getSharedPreferences (String name, int mode): 得到SP对象
name: 文件名(不带.xml)
mode: 生成的文件模式(是否是私有的,即其它应用是否可以访问)
Editor sp.edit() : 得到Editor对象
Xxx sp.getXxx(name,defaultValue): 根据name得到对应的数据
Editor : 能更新sp文件的接口
Editor put(name, value) : 保存一个键值对, 没有真正保存到文件中
Editor remove(name)
commit(): 提交, 数据真正保存到文件中了
public void save(View v) {
//2.得到Editor对象
Editor edit=sp.edit();
//3.得到输入的key/value
String key = et_sp_key.getText().toString();
String value = et_sp_value.getText().toString();
//4.使用Editor保存key-value
edit.putString(key, value).commit();
//5.提示
Toast.makeText(this, "保存完成", 0).show();
}
2.sp存储的读取数据
public void read(View v) {
//1.得到输入的key
String key = et_sp_key.getText().toString();
//2.根据key读取对应的value
String value = sp.getString(key, null);
//3.显示
if(value==null){
Toast.makeText(this, "没有找到对应的value", 0).show();
}else{
et_sp_value.setText(value);
}
}
二,手机内部文件存储
应用运行需要的一些较大的数据或图片可以用文件保存的手机内部
文件类型: 任意
数据保存的路径: /data/data/projectPackage/files/
可以设置数据只能是当前应用读取, 而别的应用不可以
应用卸载时会删除此数据
读取文件:FileInputStream fis = openFileInput("logo.png");
保存文件:FileOutputStream fos = openFileOutput("logo.png", MODE_PRIVATE)
得到files文件夹对象:File filesDir = getFilesDir();
操作asserts下的文件
得到AssetManager : context.getAssets();
读取文件: InputStream open(filename);
加载图片文件:Bitmap BitmapFactory.decodeFile(String pathName) // .bmp/.png/.jpg
1.保存数据:
public void save(View v) throws IOException {
//1.得到InputStream-->读取assets下的logo.png
//得到AssetManager
AssetManager manager = getAssets();
//读取文件
InputStream is = manager.open("logo.png");
//2.得到OutputStream-->/data/data/packageName/files/logo.png
FileOutputStream fos = openFileOutput("logo.png", Context.MODE_PRIVATE);
//3.边读边写
byte[] buffer=new byte[1024];
int len = -1;
while((len = is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
fos.close();
is.close();