读写SD卡

  Context类的openFileInput和openFileOutput方法都是针对应用程序的数据文件夹进行的文件操作,由于手机的ROM容量有限,因此这种操作有一定局限性。

  手机的SD卡提供了比ROM更大的存储容量。更加适合于存取大文件。

Environment[android.os. Environment]

常量及方法

类型

描述

public static final String MEDIA_MOUNTED

常量

扩展存储设允许进行读写访问

public static final String MEDIA_CHECKING

常量

扩展存储设处于检查状态

public static final String MEDIA_MOUNTED_READ_ONLY

常量

扩展存储设处于只读状态

public static final String MEDIA_REMOVED

常量

扩展存储设不存在

public static final String MEDIA_UNMOUNTED

常量

没有找到扩展存储设

public static File getDataDirectory()

普通

取得Data目录

public static File getDownloadCacheDirectory()

普通

取得下载的缓存目录

public static File getExternalStorageDirectory()

普通

取得扩展的存储目录

public static String getExternalStorageState()

普通

取得扩展存储设备的状态

public static File getRootDirectory()

普通

取得Root目录

public static boolean isExternalStorageRemovable()

普通

判断扩展的存储目录是否被删除

申请SD卡的读写权限

  打开项目清单文件,在Permission选项卡中选择权限

SD卡文件读取操作

 1 private TextView tv;
2 private Button bt1;
3 private Button bt2;
4 private EditText et;
5
6 protected void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 setContentView(R.layout.xml文件);
9 et = (EditText) findViewById(R.id.sdET);
10 tv = (TextView) findViewById(R.id.sdTV);
11 bt1 = (Button) findViewById(R.id.sdBT01);
12 bt2 = (Button) findViewById(R.id.sdBT02);
13 bt1.setOnClickListener(this);
14 bt2.setOnClickListener(this);
15 }
16
17 public void onClick(View v) {
18 if (!Environment.getExternalStorageState().equals(
19 Environment.MEDIA_MOUNTED)) {// 判断SD卡是否存在
20 Toast.makeText(Sd0.this, "SD卡不存在", 3000).show();
21 return;
22 }
23 switch (v.getId()) {
24 case R.id.sdBT01:
25 // 创建文件夹对象
26 File dir = new File(Environment.getExternalStorageDirectory(),"test");
27 if (!dir.exists()) { // 如果目录不存在,就创建
28 dir.mkdir();
29 }
30 File file = new File(dir, "test.txt"); // 创建文件
31 PrintWriter pw;
32 try {
33 pw = new PrintWriter(file);
34 pw.println(et.getText().toString());
35 pw.close();
36 Toast.makeText(Sd0.this, "保存成功", 3000).show();
37 } catch (FileNotFoundException e) {
38 e.printStackTrace();
39 }
40 break;
41 case R.id.sdBT02:
42 File f = new File(Environment.getExternalStorageDirectory()+
43 "/test/test.txt");// 创建文件夹对象
44 BufferedReader br;
45 try {
46 br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
47 String str = null;
48 while ((str = br.readLine()) != null) {
49 tv.append(str);
50 }
51 } catch (FileNotFoundException e) {
52 e.printStackTrace();
53 } catch (IOException e) {
54 e.printStackTrace();
55 }
56 break;
57 }
58 }

最新文章

  1. 阿里im即时通讯 h5 demo
  2. C6000代码层面优化(一)
  3. 洛谷P3368 【模板】树状数组 2
  4. 【android-cocos2d-X 环境配置】在Mac下搭建Cocos2d-X-android开发环境!
  5. 【go】脑补框架 Express beego tornado Flux reFlux React jsx jpg-ios出品
  6. HDU 5943 Kingdom of Obsession 【二分图匹配 匈牙利算法】 (2016年中国大学生程序设计竞赛(杭州))
  7. Android app作为系统应用实现功能笔记
  8. MYSQL的日志与备份还原
  9. Storm同步调用之DRPC模型探讨
  10. select中想要加a链接 并且新窗口打开
  11. 查看Ubuntu的显卡信息
  12. linux系统关闭指定服务的方式
  13. cmd 命令
  14. 动手动脑(&课后实验):类和对象
  15. jedis 连接 redis:Could not get a resource from the pool——我的出错原因和解决办法
  16. 如何使用 Flexbox 和 CSS Grid,实现高效布局
  17. http://www.cnblogs.com/linxiyue/p/8244724.html
  18. jquery插件--问题类(新增&&删除)简易版
  19. Open-Xml SDK使用介绍
  20. 把打印的内容保存成文件(PDF)

热门文章

  1. 一步一步教你用IntelliJ IDEA 搭建SSM框架(3)——实现用户登录功能
  2. Kali-利用metasploit中的exploit/multi/handler进行攻击
  3. Mac 简单切换jdk版本
  4. java里字节与字符的区别
  5. KVM web管理工具——WebVirtMgr
  6. 5分钟快速部署PESCMS TEAM 团队任务管理系统开发版
  7. C#8.0: 在 LINQ 中支持异步的 IAsyncEnumerable
  8. 关于在使用scrapy-redis分布式踩过的那些坑:
  9. WebSocket+Netty构建web聊天程序
  10. web文件下载(附方案及源码配置)