Rom内存
- 存储内存,相当于电脑的硬盘
- Android中专有名词:内部存储空间/internal storage
- 内部存储空间是必须的,没有内部存储系统就不用运行,并且如果内部存储满了就不能再系统中安装新的应用
- 存储空间大小不会超过2G,大于这个大小的内存空间一定是外部存储空间
- 老式智能机自带的512M是内部存储空间,插入SD卡就是外部存储空间
- 新一代智能机不支持插入SD卡,自带32G外部存储空间
SD卡
- 外部存储,相当于电脑的移动硬盘
- Android中专有名词:外部存储空间/external storage
- 外部存储是可有可无的,一般情况是会有的
盘符路径
Android中的内部存储盘符路径是:data/data/…
系统会在该文件夹下为所有应用创建一个包名文件夹,这些文件夹就是应用的内专属存储空间,专门用来存放应用在使用过程中产生的一系列数据文件。
Toast提示框
需要配合show()方法使用,
Toast.makeText(ConText, text, duration).show()
第三个参数决定提示框显示的时间,可以使用系统常量LENGTH_SHORT/LENGTH_LONG,分别表示3s和5s;也可以使用0和1;
路径api
getFilesDir 返回包含data/data/<package name>/files路径的的File对象
getCacheDir 返回包含data/data/<package name>/cache路径的File对象
当内部存储空间的比较少的时候,cache文件件中的文件可能会被删除,但是也可能不会被删除,我们可以设置一个阀值(比如1MB)来确定cache文件夹清空的时间,阻止系统原生的不确定
上下文
getFilesDir是属于ContextWrapper的方法,ContextWrapper是Context的包装类,Context和ContextWrapper是差不多相同的
上下文是获取应用环境的全局环境信息(getFilesDir/getCacheDir)的一个接口,当然不同的环境使用上下文得到的结果不同。
结构
- Context
- ContextWrapper
- ContextThemeWrapper
- Activity
- many other
- Activity
- ContextThemeWrapper
- ContextWrapper
对象
- FileOutputStream
- FileInputStream
- inputStream
- BufferedRead
代码
1 /** 2 * 记住用户名和密码 3 * @param view 4 */ 5 public void login(View view){ 6 String name = et_name.getText().toString(); 7 String pass = et_pass.getText().toString(); 8 9 CheckBox cb = (CheckBox)findViewById(R.id.cb); 10 if (cb.isChecked()) { 11 File file = new File(getCacheDir(), "info.txt"); 12 try { 13 FileOutputStream fos = new FileOutputStream(file); 14 fos.write((name + "##" + pass).getBytes()); 15 fos.close(); 16 Toast.makeText(this, "登陆成功", 0).show(); 17 } catch (Exception e) { 18 e.printStackTrace(); 19 Toast.makeText(this, "登陆失败", 0).show(); 20 } 21 } 22 } 23 24 /** 25 * 账号密码回显 26 */ 27 public void readAccount(){ 28 File file = new File(getFilesDir(), "info.txt"); 29 if (file.exists()) { 30 try { 31 FileInputStream fis = new FileInputStream(file); 32 BufferedReader br = new BufferedReader(new InputStreamReader(fis)); 33 String text = br.readLine(); 34 String[] strings = text.split("##"); 35 et_name.setText(strings[0]); 36 et_pass.setText(strings[1]); 37 } catch (Exception e) { 38 e.printStackTrace(); 39 } 40 } 41 }
时间: 2024-10-10 12:38:44