为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件。SD卡大大扩充手机的存储能力。

操作SD首先要加权限:

<!--在SDCard中创建与删除文件权限  -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--  从SDCard读取数据权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

读写SD卡上的文件请按以下三步进行:

(1)调用Environment的getExternalStorageState()方法判断手机上是否插入了SD卡,并且应用程序具有读写SD卡的权限;

(2)调用Environment的getExternalStorageDirectory()方法来获取外部存储器,也就是SD卡的目录;

(3)使用FileInputStream   FileOutputStream   FileReader或者FileWriter读写SD卡里面的文件;

下面以简单实例说明:

1.XML代码:

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".MainActivity" >
10
11     <Button
12         android:id="@+id/button1"
13         android:layout_width="match_parent"
14         android:layout_height="wrap_content"
15         android:layout_alignParentTop="true"
16         android:layout_centerHorizontal="true"
17         android:text="向SD中写入数据" />
18
19     <Button
20         android:id="@+id/button2"
21         android:layout_width="match_parent"
22         android:layout_height="wrap_content"
23         android:layout_alignLeft="@+id/button1"
24         android:layout_below="@+id/button1"
25         android:text="从SD卡中读取数据" />
26
27 </RelativeLayout>

2.java代码:

 1 package com.example.filesd;
 2
 3 import java.io.BufferedReader;
 4 import java.io.File;
 5 import java.io.FileInputStream;
 6 import java.io.FileOutputStream;
 7 import java.io.InputStreamReader;
 8 import android.os.Bundle;
 9 import android.os.Environment;
10 import android.app.Activity;
11 import android.view.View;
12 import android.view.View.OnClickListener;
13 import android.widget.Button;
14 import android.widget.Toast;
15
16 public class MainActivity extends Activity {
17     private Button button;
18     private Button button2;
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_main);
23         button = (Button) this.findViewById(R.id.button1);
24         button2 = (Button) this.findViewById(R.id.button2);
25         button.setOnClickListener(new OnClickListener() {
26             @Override
27             public void onClick(View arg0) {
28                 writeSDcard("Hello,恭喜您数据读取了!");
29             }
30         });
31         button2.setOnClickListener(new OnClickListener() {
32             @Override
33             public void onClick(View arg0) {
34                 readSDcard();
35
36             }
37         });
38     }
39
40     // 向SD卡写入数据
41     private void writeSDcard(String str) {
42         try {
43             // 判断是否存在SD卡
44             if (Environment.getExternalStorageState().equals(
45                     Environment.MEDIA_MOUNTED)) {
46                 // 获取SD卡的目录
47                 File sdDire = Environment.getExternalStorageDirectory();
48                 FileOutputStream outFileStream = new FileOutputStream(
49                         sdDire.getCanonicalPath() + "/test.txt");
50                 outFileStream.write(str.getBytes());
51                 outFileStream.close();
52                 Toast.makeText(this, "数据保存到text.txt文件了", Toast.LENGTH_LONG)
53                         .show();
54             }
55         } catch (Exception e) {
56             e.printStackTrace();
57         }
58     }
59
60
61     // 从SD卡中读取数据
62     private void readSDcard() {
63         StringBuffer strsBuffer = new StringBuffer();
64         try {
65             // 判断是否存在SD
66             if (Environment.getExternalStorageState().equals(
67                     Environment.MEDIA_MOUNTED)) {
68                 File file = new File(Environment.getExternalStorageDirectory()
69                         .getCanonicalPath() + "/test.txt");
70                 // 判断是否存在该文件
71                 if (file.exists()) {
72                     // 打开文件输入流
73                     FileInputStream fileR = new FileInputStream(file);
74                     BufferedReader reads = new BufferedReader(
75                             new InputStreamReader(fileR));
76                     String st = null;
77                     while ((st = reads.readLine()) != null) {
78                         strsBuffer.append(st);
79                     }
80                     fileR.close();
81                 } else {
82                     Toast.makeText(this, "该目录下文件不存在", Toast.LENGTH_LONG).show();
83                 }
84             }
85         } catch (Exception e) {
86             e.printStackTrace();
87         }
88         Toast.makeText(this, "读取到的数据是:" + strsBuffer.toString() + "",
89                 Toast.LENGTH_LONG).show();
90     }
91 }

Android数据存储之SD卡相关推荐

  1. 【Android游戏开发十二】(保存游戏数据 [上文])详解SharedPreference 与 FIleInputStream/FileOutputStream将数据存储到SD卡中!

     李华明Himi 原创,转载务必在明显处注明: 转载自 [黑米GameDev街区] 原文链接:  http://www.himigame.com/android-game/327.html 很多童鞋说 ...

  2. android 数据持久化——读写SD卡中的内容

    在前面讲的那三个方法:openFileOutput .openFileInput 虽然都能通过流对象OutputStream和InputStream可以处理任意文件中的数据,但与SharedPrefe ...

  3. android 自动下一首,Android播播放完SD卡指定文件夹音乐之后,自动播放下一首

    最近做一个项目,需要连续播放音乐,播放完一首歌之后,自动播放完下一首歌.不要重复播放. 代码如下: package com.example.asyncplayer_ex; import java.io ...

  4. File存对象--android 的File存储到SD卡();

    方法1:android File存对象--File存储到SD卡(); 1.保存对象到本地或SD卡 需要注意的是,要保存的对象(OAuthV1)一定要实现了Serializable接口. 实现了Seri ...

  5. android的SP存储和SD卡存储

    在android中有着很多的存储方式,例如数据库存储,SD卡存储以及SharedPreferences(以下简称SP)等,下面我们来主要的讲解一下SP以及SD卡存储. 首先是SP,SP存储是一个采用K ...

  6. android 访问存储卡,Android:无法访问存储在SD卡中的文件

    我正在研究一个读取存储在SD卡(内部/数据/本地)中的.txt文件的应用程序.我遇到的问题是,它似乎可以访问文件路径,但它不能访问文件本身(尽管它具有读取和写入权限),但会引发FileNotFound ...

  7. android qq存储方式,android(5)(模拟QQ登录,文件存储,SD卡存储,SharedPreferences存储)...

    模拟QQ登录(记录账号和密码): 1.文件存储到文件中: /** * 文件存储 *@author Administrator * */ public class Utils { /** * 保存用户信 ...

  8. android 读取手机存储数据恢复,如何从Android手机上的SD卡恢复已删除的文件-万兴恢复专家...

    第4部分:解决Android手机SD卡问题的提示 使用这些用于Android手机的SD卡恢复软件后,您当然可以检索丢失或删除的内容.然而,有时用户在Android设备上使用SD卡时会遇到不必要的问题和 ...

  9. android存储到sd卡中,android保存文件到SD卡【文件存储】

    sd卡用于保存大文件如视频,音频,大文档等 package cn.itcast.files; import cn.itcast.service.FileService; import android. ...

最新文章

  1. 英特尔CFO:裁员为加速转型 是艰难但正确的决定
  2. 代码大全阅读笔记02
  3. Matlab画图中的小技巧
  4. Elasticsearch的功能,Elasticsearch的适用场景,Elasticsearch的特点(来自学习资料)
  5. java types.varchar_java statement.registerOutParameter(5, java.sql.Types.VARCHAR)返回值长度限制...
  6. 嵌入式linux屏幕录制,在MAC系统上进行屏幕录制
  7. 80字符带空格 段错误_简单错误记录
  8. SqlServer修改密码后登陆不上
  9. 【工具】ColorPix!分享一个超好用的桌面取色工具
  10. 手机计算机音乐软件,“自从拥有了这三款软件,我把电脑、手机上的音乐播放器全部卸载了”...
  11. 有监督学习(supervised learning))与无监督学习(unsupervised learning)之间有何区别?
  12. Parallel Scavenge收集器
  13. Python爬虫进阶之字体反扒保姆级教程!
  14. 【C】例9.7有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)
  15. 开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放
  16. GEP-vcc虚拟卡介绍以及虚拟卡特点
  17. Verilog基础知识(异步FIFO)
  18. 未分配利润与利润表不一致_为什么本年利润与利润表不一致
  19. Python实现局域网IP端口扫描
  20. UEditor 百度编辑器 工具栏 新增自定义按钮及功能

热门文章

  1. 红帽RHEL6.8离线环境下升级到RHEL7.3
  2. bootstrap-table页码ALL显示为NAN
  3. centos下kong源码安装
  4. Async_Await;
  5. Hbase 常见错误总结——摘自忘了
  6. 自动根据动态的intput计算值
  7. Enterprise Library: Data Access Application Block配置文件分析篇
  8. stm32qspi内存映射_stm32 QSPI内存映射模式
  9. xcode新版本single view_动态数组函数系列1|概况-跟以往Excel版本完全不一样玩法的函数...
  10. python元组修改_python基础知识之元组