一、加入访问sdcard的权限

Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:
File sdCardDir = new File("/mnt/sdcard"); //获取SDCard目录
File saveFile = new File(sdCardDir, "itcast.txt");
//上面两句代码可以合成一句: File saveFile = new File("/mnt/sdcard/itcast.txt");

  在Shared中,路径是不需要自己填写的。因为要保存到内存中去,所以需要自己填写路径。绝对路径是不被推荐的。在Android2.2之前,sdCard的路径都是“/sdcard”在android2.2以及之后的版本中,路径都换成了“/mnt/sdcard”。为了兼容之前的版本,在android中有着一个镜像文件,将“/sdcard”指向了"/mnt/sdcard"。

  android的方法中提供了获取外储存文件的方法,就是Environment.getExternalStorageDirecttory().还有一点要注意的事,保存到sdcard中文件的时候,需要获取系统的允许,在Mainfest.xml文件中,添加文件删除和创建的允许。在</application>下增加:

    <!-- 加入SDCARD的删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 加入SDCARD的写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

二、引入单元测试

<!-- 在Mainfest.xml文件中增加,导入library的使用(AndroidUnit) -->
<uses-library android:name="android.test.runner" />
<!-- 为savefiletosdcard这个包增添单元测试说明 -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.android.savefiletosdcard" >
</instrumentation>
<!-- 然后编写测试类,需要继承AndroidTestCase类。 -->

三、编写业务层代码

    /**
* 保存文件到sdcard,需要使用FileOutputStream对象
* 保存到sdcard的文件,可以让每个应用访问,不受限制。
* @param filename
* @param content
* @throws Exception
*/
public void saveToSDCard(String filename,String content) throws Exception{
// File file = new File(new File("/mnt/sdcard"),filename);
//获取sdcard目录
File file = new File(Environment.getExternalStorageDirectory(),filename);
FileOutputStream fos = new FileOutputStream(file);
fos.write(content.getBytes());
fos.close();
}
    //判断sdcard状态,并且允许读写
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
saveToSDCard(nameString, contentString);
}

四、编写测试代码

public class SDCardTest extends AndroidTestCase {

    public void testSaveToSDCard() throws Exception{
FileService fileService = new FileService(getContext());
fileService.saveToSDCard("11.txt", "abcdef");
}
}

执行结果如下:

Android学习笔记_6_保存文件到SDCard的更多相关文章

  1. Android学习笔记之Drawable 文件夹

    PS:最近闲着无聊..模仿去写个QQapp..效果还不错..并且从中又学习到了一些相关的东西,在这里进行一些相关总结.. 学习内容: Android 中 Drawable 文件夹内部相关属性..   ...

  2. Android学习笔记之mainfest文件中android属性

    android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. -------------------------------- ...

  3. Android学习笔记样式资源文件

    样式资源和主题资源都是写在styles.xml文件里面的 <style name="title"> <item name="android:textSi ...

  4. Android学习笔记数组资源文件

    在android中我们可以通过数组资源文件,定义数组元素. 数组资源文件是位于values目录下的 array.xml <?xml version="1.0" encodin ...

  5. Android学习笔记颜色资源文件

    资源文件目录 颜色资源文件格式 colors.xml <?xml version="1.0" encoding="utf-8"?> <reso ...

  6. Android学习笔记菜单资源文件

    创建菜单资源 menu_one.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns: ...

  7. 【C#学习笔记】保存文件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  8. android学习笔记36——使用原始XML文件

    XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...

  9. 【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件

    目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.n ...

随机推荐

  1. PHP中break及continue两个流程控制指令解析

    <?php $arr = array( 'a' => '0a0', 'b' => '0b0', 'c' => '0c0', 'd' => '0d0', 'e' => ...

  2. pom.xml无法引入本地的jar和安装到本地安装maven 错误: 找不到或无法加载主类 org.codehaus.plexus.classworlds.launcher.Launcher

    今天maven突然无法引入本地maven库的jar包,导致maven工程出错,然后就准备重装maven ,开始只是将环境变量删除,将之前的压缩包解压,再重新配置环境 变量,可是配置好后在dos窗口 输 ...

  3. C++程序设计基础(7)位运算

    注:读<程序员面试笔记>笔记总结 1.知识点 运算 符号 说明 与 & 有0为0,都1为1 或 | 由1为1,都0为0 非(取反) ~ 0变1,1变0 异或 ^ 同为0,异为1 左 ...

  4. 微信小程序参考资料及网址

    微信小程序 https://mp.weixin.qq.com/debug/wxadoc/dev/api/ http://www.w3cschool.cn/weixinapp/ 微信小程序 开发工具 h ...

  5. 关于MySQLServer5.6配置问题

    配置MySQL MySQL数据库下载以后在根目录添加my.ini配置文件 需要注意的是配置文件的二个属性: basedir=D:\MySqlServer # mysql所在目录 根据需求改 MySQL ...

  6. git本地分支关联远程分支

    问题描述: 从远程master克隆下来以后, 在本地创建wf_dev分支, 此时执行git pull 操作出现图中问题. 这是因为:本地的wf_dev分支还没有和远程的wf_dev进行关联. 执行:  ...

  7. struts2的基本配置

    1.package标签下主要的点在namespace和name,extend上 extend 一般继承自struts-default.xml下,继承其拦截器及一些功能,这个已在本人的拦截器一文中有讲到 ...

  8. 【阿里云产品公测】PTS压力测试最低配ECS性能及评测

    PTS是一个性能测试工具,可以使用PTS对自身系统性能在阿里云环境里的状况进行整体评估来找出你的系统性能瓶颈从而优化系统,同时你还可以在了解自己的系统性能指标情况下便于未来新增扩容.在使用PTS前你必 ...

  9. SQL获取本周,上周,本月,上月的开始时间和结束时间

    ),),--本周 ),),--上周 ),),--本月 ),),--上月 ),),--近半年 ),)--近一年 ), ,, ),)--本周开始时间 ), ,, ),)--本周结束时间 ),,, ),)- ...

  10. day005-异常

    1.        异常概念 1.1   异常的继承体系 异常的根类:java.lang.Throwable,其下有两个子类: Java.lang.Error Java.util.Exception  ...