Android学习笔记_6_保存文件到SDCard
一、加入访问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的更多相关文章
- Android学习笔记之Drawable 文件夹
PS:最近闲着无聊..模仿去写个QQapp..效果还不错..并且从中又学习到了一些相关的东西,在这里进行一些相关总结.. 学习内容: Android 中 Drawable 文件夹内部相关属性.. ...
- Android学习笔记之mainfest文件中android属性
android:allowTaskReparenting 是否允许activity更换从属的任务,比如从短信息任务 切换到浏览器任务. -------------------------------- ...
- Android学习笔记样式资源文件
样式资源和主题资源都是写在styles.xml文件里面的 <style name="title"> <item name="android:textSi ...
- Android学习笔记数组资源文件
在android中我们可以通过数组资源文件,定义数组元素. 数组资源文件是位于values目录下的 array.xml <?xml version="1.0" encodin ...
- Android学习笔记颜色资源文件
资源文件目录 颜色资源文件格式 colors.xml <?xml version="1.0" encoding="utf-8"?> <reso ...
- Android学习笔记菜单资源文件
创建菜单资源 menu_one.xml <?xml version="1.0" encoding="utf-8"?> <menu xmlns: ...
- 【C#学习笔记】保存文件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- android学习笔记36——使用原始XML文件
XML文件 android中使用XML文件,需要开发者手动创建res/xml文件夹. 实例如下: book.xml==> <?xml version="1.0" enc ...
- 【转】 Pro Android学习笔记(七八):服务(3):远程服务:AIDL文件
目录(?)[-] 在AIDL中定义服务接口 根据AIDL文件自动生成接口代码 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件.转载须注明出处:http://blog.csdn.n ...
随机推荐
- 最好用的数据存储Easy Save2讲解
转载:http://www.manew.com/thread-100109-1-1.html 今天抽时间学习了“Easy Save2”插件,版本v2.6.3 我个人觉得这个插件是做数据存取最好的 ...
- linux_api之进程环境(二)
本篇索引: 1.引言 2.终端登录 3.进程组 4.会话期 1.引言 通过上一篇的学习,我们已经知道了如何控制一个进程,fork函数从父进程中复制出子进程,我们可以通过exec函数让子进程运行新的 ...
- 常用shell脚本(持续更新中)
1. 写一个shell脚本来得到当前的日期,时间,用户名和当前工作目录. 答案 : 输出用户名,当前日期和时间,以及当前工作目录的命令就是logname,date,who i am和pwd. #!/b ...
- nopCommerce 3.9 版本发行
NopCommerce中文信息地址:http://www.nopcn.com/nopcommerce39-blog-release-notes.html NopCommerce英文地址:http:// ...
- common-jdbc:一个基于SpringJdbcTemplate的高性能数据库操作工具类库
项目地址:https://gitee.com/cnsugar/common-jdbc 一.简介 基于SpringJdbcTemplate的高性能数据库操作工具类库,支持mysql.oracle数据库, ...
- Libxml2 学习
Libxml2 学习 1.概要 libxml 是一个实现操作XML数据功能的开源C语言库. API参考文档 http://xmlsoft.org/html/libxml-tree.html 2.wi ...
- Thrift笔记(三)--Thrift框架通信源码分析
Thrift 客户端调用RPC的Demo public static void main(String[] args) throws Exception { TTransport transport ...
- Bash 终端快捷键
在终端下输大量的命令,有些快捷键还是挺有帮助的. 跳跃 跳到最后 ctrl + e (end) 跳到最前 ctrl + a (abcde....) 向后跳一个单词 alt + 右方向键 向前跳一个单词 ...
- 【代码笔记】XML深入学习:DTD约束与DTD语法(2)
DTD语法之定义实体(了解即可) 实体分为一般实体和参数实体. 定义实体:定义变量 引用实体:使用变量 一般实体:定义实体在DTD中,实体引用在xml中. 参数实体:定义实体在DTD中,实体引用在DT ...
- ie浏览器 vuejs axios Promise 未定义
随着前端技术的发现,es6语法在被更大范围的使用,而很多的浏览器并不支持ES6,比如IE…… 这里我们介绍几个解决方法. 一.使浏览器兼容ES6基本语法 1.在引入其他脚本前先引入browser.mi ...