外部存储读写

直接复制粘贴Android项目的修改项

  1. 项目名称
  2. 清单文件
  3. res > strings >values
  4. 导包

外部存储路径演变

  • 2.2之前:根目录下/sdcard
  • 2.2之后:mnt/sdcard
  • 4.2开始:storage/sdcard
  • 在原来的盘符路径留下快捷方式目的是为了兼容低版本应用

路径api

在实际开发是需要使用路径api来获取外部存储的真实盘符路径,因为各大厂商的sd路径各不相同,为了兼容,在开发是需要使用api来获取sd路径的。

Environment.getExternalStorageDirectory()   返回包含sd卡真实路径的File对象。

读写权限

  • 写数据必须要权限:WRITE_EXTERNAL_STORAGE
  • 读数据可要可不要:READ_EXTERNAL_STORAGE
    • 4.0之前是完全不需要权限的,4.0之后用户设置了sd读写保护就必须要权限,当然默认还是需要赋予权限

sd卡状态

我们在将数据保存到sd中之前需要判断sd卡的状态是否能够进行读写操作

Environment.getExternalStorageState()   返回String类型字符串

  1. MEDIA_REMOVED      卸载,没有插sd卡
  2. MEDIA_UNMOUNTED    插了sd卡,但是没有挂载(4.0之前有一个卸载sd卡按钮)
  3. MEDIA_CHECKING     sd卡正在被遍历
  4. MEDIA_MOUNTED      sd卡可以被读写
  5. MEDIA_MOUNTED_READ_ONLY  sd卡只读

代码

 1 /**
 2      * 登陆
 3      *
 4      * @param view
 5      */
 6     public void login(View view) {
 7         String name = et_name.getText().toString();
 8         String pass = et_pass.getText().toString();
 9
10         CheckBox cb = (CheckBox) findViewById(R.id.cb);
11         if (cb.isChecked()) {
12             if (Environment.MEDIA_MOUNTED.equals(Environment
13                     .getExternalStorageState())) {
14                 File file = new File(Environment.getExternalStorageDirectory(),
15                         "info.txt");
16                 try {
17                     FileOutputStream fos = new FileOutputStream(file);
18                     fos.write((name + "##" + pass).getBytes());
19                     Toast.makeText(this, "登陆成功", 0).show();
20                     fos.close();
21                 } catch (Exception e) {
22                     Toast.makeText(this, "登陆失败", 0).show();
23                     e.printStackTrace();
24                 }
25             }
26         } else {
27             Toast.makeText(this, "亲,你没有记住用户名和密码啊", 0).show();
28         }
29     }
30
31     /**
32      * 记住用户名和密码
33      */
34     public void readAccount() {
35         File file = new File(Environment.getExternalStorageDirectory(),
36                 "info.txt");
37         FileInputStream fis;
38         if (file.exists()) {
39             try {
40                 fis = new FileInputStream(file);
41                 BufferedReader br = new BufferedReader(new InputStreamReader(
42                         fis));
43                 String text = br.readLine();
44                 String[] strings = text.split("##");
45                 et_name.setText(strings[0]);
46                 et_pass.setText(strings[1]);
47             } catch (Exception e) {
48                 e.printStackTrace();
49             }
50         } else {
51             Toast.makeText(this, "没有找到文件", 0).show();
52         }
53     }
时间: 2024-08-29 08:18:47

外部存储读写的相关文章

Android 在外部存储读写文件

本文主要介绍android中如何在外部存储读写数据 sd卡的路径 sdcard:2.3之前的sd卡路径 mnt/sdcard:4.3之前的sd卡路径 storage/sdcard:4.3之后的sd卡路径 打开file explorer 可以看到sdcard是个空的文件夹,因为这个文件夹是个快捷方式,指向/storag文件夹,接着打开storag文件夹 读写sd卡 最简单的打开sd卡的方式 File file = new File("sdcard/info.txt"); * 写sd卡需要

关于获得安卓外部存储读写权限

最近做了一个关于相册的小App,需要对安卓手机的存储设备进行读取,首先需要获取系统读写权限,在网上一顿好找,对于老手来说,可能很容易,对于菜鸟来说,就有点困难了,为了容易学习,特把自己写的一些心得写下,用以参考.如有不当之处,欢迎指正. 首先做一个关于手机内部存储和外部存储之间的介绍: 对内部存储设备不需要申请读写权限,一般是自动分配给手机的,在卸载app时消失:用getFileDirs()直接获取/data/data/packageName/files/xxx. 外部存储设备一般需要获取路径需

Android简易实战教程--第十五话《在外部存储中读写文件》

第七话里面介绍了在内部存储读写文件 点击打开链接. 这样有一个比较打的问题,假设系统内存不够用,杀本应用无法执行,或者本应用被用户卸载重新安装后.以前保存的用户名和密码都不会得到回显.所以,有必要注意这个问题 因此把文件保存到sd卡中.即今天所写的  第十五话<在外部存储中读写文件> 首先布局文件和第七话一样: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:

Android 存储学习之在外部存储中读写文件

上节学习了如何在手机内部存储中读写文件,本节学习如何在手机的外部存储中读写文件.那就是如何在Sdcard中读写文件. 那我们还是用以前登录界面的例子举例说明,(登录界面请看上节Android 存储学习之在内部存储中读写文件) 先我们显示写的代码: 当点击确定并且自动登录的钩是选中的,则就会在sdcard文件夹写创建一个info.txt文件 public void login(View v) { String name = ed_nam.getText().toString(); String p

狂刷Android范例之3:读写外部存储设备

狂刷Android范例之3:读写外部存储设备 说明 狂刷Android范例系列文章开张了.每篇学习一个Android范例,将一个范例单独生成一个可运行的app,并对重点源代码进行简要分析.然后提供打包好的源代码下载. 功能 提供一个经典范例,监控Android外部存储设备状态,对公用目录,app私有目录进行读写操作,并展示在app界面上. 代码包在此,无需下载分: http://download.csdn.net/detail/logicteamleader/8790109 来源 ReadAss

【转】 android中的文件操作详解以及内部存储和外部存储

摘要 其实安卓文件的操作和Java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念. 相对 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念

android内部存储与外部存储

存储在内部还是外部 所有的Android设备均有两个文件存储区域:"internal" 与 "external" . 这两个名称来自于早先的Android系统,当时大多设备都内置了不可变的(internal storage)及一个类似于SD card这样的可卸载的存储部件(external storage).之后有一些设备将"internal" 与 "external" 都做成了不可卸载的内置存储,虽然如此,但是这一整块还是从

【Android平台安全方案】の #00-请不要在外部存储(SD卡)加密存储的敏感信息

本文翻译自https://www.securecoding.cert.org/confluence/display/java/DRD00-J.+Do+not+store+sensitive+information+on+external+storage+%28SD+card%29+unless+encrypted+first,有增删改. Android提供了几种保存持久化应用数据的选择,当中之中的一个就是外部存储(/sdcard, /mnt/sdcard).外部存储包含设备内部的微型或标准大小的

Android内存解析(二)— 详解内存,内部存储和外部存储

总述 觉得十分有必要搞清楚内存,内部存储和外部存储的区别,还有我们在开发中真正将数据存在了手机的哪儿. 先提一个问题:手机设置的应用管理中,每个App下都有清除数据和清除缓存,清除的分别是哪里的数据? 一   内存,内部存储和外部存储 1. 可对Android手机存储空间做如下划分: 整个存储空间分为内部存储和外部存储两部分,内部存储中又包含RAM和ROM等部分. 2. 具体概念区分 内部存储,即InternalStorage,也常说内置存储卡,这是手机内置的存储空间,出厂时就被确定,是手机的一