数据存储
数据存储--存储
- 第一步:路径是内部存储空间的路径 路径只能写现在这个工程的路径
File file = new File("data/data/com.example.shuijucunchu/info.txt"); - 第二步:创建文件输出流
FileOutputStream fos;
传入一个file并且实例化这个fos
fos = new FileOutputStream(file);
把内容写入这个文件
fos.write((name+"####"+pass).getBytes());
关闭输出流
fos.close();
数据存储---读取
- 第一步:根据路径获得文件
File file = new File("data/data/com.example.shuijucunchu/info.txt"); - 第二步:创建读取流
FileInputStream fos = new FileInputStream(file); - 第三步:把字节流转换成字符流
BufferedReader br = new BufferedReader(new InputStreamReader(fos)); - 第四步:读取
String text = br.readLine(); - 第五:将字符串 根据字符转换成数据
String[] s = text.split("####"); - 赋值
et_name.setText(s[0]);
et_pass.setText(s[1]);
用api在内部存储中读写文件
- 其实就是路径自己不用写调用方法就行了
第一个参数是data/data/com.example.shuijucunchu/files 第二个参数是文件名
File file = new File(getFilesDir(),"info.txt");
第一个参数是data/data/com.example.shuijucunchu/cache
File file = new File(getCacheDir(),"info.txt"); - 如何检测sd卡
- MEDIA_UNKNOWN:不能识别sd卡
- MEDIA_REMOVED:没有sd卡
- MEDIA_UNMOUNTED:sd卡存在但是没有挂载
- MEDIA_CHECKING:正在准备
- MEDIA_MOUNTED:sd卡已经挂载,可用
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {逻辑处理}
获取SD卡剩余空间的大小
- 第一步:获取sd卡的路径并创建File对象
File path = Environment.getExternalStorageDirectory(); - 第二步:根据sd卡路径创建一个StatFs的对象,这个对象包含存储空间的所有信息
StatFs stat = new StatFs(path.getPath()); - 第三步:获取区块大小,获取区块的总个数,获取可用区块的个数
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
long avaliableBlocks = stat.getAvailableBlocks(); - 第四步:可用空间 总空间 字符类型转换
可用 = 可用个数 * 区块的大小
总个空间 = 总个数 * 区块的大小
Formatter.formatFileSize(this, avaliableBlocks * blockSize);
文件访问权限
- 在Android中,每一个应用,都是一个独立的用户
- 指的是谁能访问这个文件
- 使用十个字母drwxrwrwx
- 第一做字母
- d:表示文件夹
- -:表示文件
- 第一组rwx:表示的是文件拥有者(owner)对文件的权限
- r:reaed,读
- w:write 写
- x:execute 执行权限 -表示没有执行权限
- 第二组rwx:表示的是跟文件拥有者属于同一个用户组的用户对文件的权限。
- 第三组rwx:表示的其他用户对文件的权限
SharedPreference写入文件
- 非常适合用来保存简单的,零散的数据
- 第一步:初始化对象SharedPreferences 第一个参数:文件名 第二个参数:权限
SharedPreferences sp = getSharedPreferences("info",MODE_PRIVATE); - 第二步:初始化sp的编辑器
Editor ed = sp.edit(); - 第三步:写入文件,根据键,值的方式
ed.putString("name", name);
ed.putString("pass", pass); - 第四步:提交
ed.commit();
SharedPreference读取文件
- 第一步:初始化对象
SharedPreferences sp = getSharedPreferences("info",MODE_PRIVATE); - 第二步:根据键去取值 第一个参数:键 第二个参数:假如根据这个键取不到值,那就显示第二个参数
String name = sp.getString("name", "");
外部数据存储中读写文件
- 第一步:开启读sd卡的权限
在清单文件中选择 Permissions然后再添加权限 - 第二步:写路径
File file = new File("sdcard/info.txt"); - 当读sd卡时不需要权限4.0之前。 在4.0之后在开发者权限 设置保护sd卡 那么就需要读sd卡的权限
对话框
- 创建提示框
参数1:this 参数2:提示框的内容 参数3:什么时候消失
Toast t = Toast.makeText(this, "登陆成功", Toast.LENGTH_SHORT); - 显示对话框
t.show();
如何关联源码
- ctrl+左键 选择Attach Source 把源码导入才能看到
问题
- 为什么要加try{}catch(){};
网友评论