我的android 第9天 - 文件存储
来源:互联网 发布:sql server 2012 网盘 编辑:程序博客网 时间:2024/05/19 02:45
数据存储与访问
很多时候我们的软件需要对处理后的数据进行存储或再次访问。Android为数据存储提供了多种方式,分别有如下几种:
文件(txt\xml)
SharedPreferences(参数)
SQLite数据库
内容提供者(Content provider)
网络
介绍:文件存储是Android开发中常用的操作,本节主要针对文件在手机内存卡以及SDCard的存储实现
案例:在Activity界面中实现对文件的存储与读取
一、场景分析
当点击读取,从内存或者sdcard中读取指定的文件到文本框中
二 实现
/**
* 保存文件到手机自带存储空间
* @param fileName 文件名
* @param fileBody 文件内容
*/
public void save(String fileName, String fileBody) throws Exception{
// 文件名不能包含路径 , 文件保存在 /data/data/包名/files
FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE);
fos.write(fileBody.getBytes());
fos.close();
}
/**
* 读取文件内容
* @param fileName 文件名
* @return 文件内容
*/
public String read(String fileName) throws Exception {
// 会读取 /data/data/包名/files文件夹下的文件
FileInputStream fis = context.openFileInput(fileName);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = -1;
while ( (len = fis.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
fis.close();
baos.close();
return new String(baos.toByteArray());
}
/**
* 保存文件到SDCard
*/
public void saveToSDCard(String fileName, String fileBody) throws Exception {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
// 得到SDCard根路径
File rootDir = Environment.getExternalStorageDirectory();
File file = new File(rootDir, fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(fileBody.getBytes());
fos.close();
} else {
throw new RuntimeException("SDCard无法正常使用");
}
}
1.手机自带存储空间
1> 存储
* context.openFileOutput(String name, int mode)
* name : 文件名(不能包含路径)
* mode : 文件操作模式
- Context.MODE_PRIVATE
* 只能被本应用读写
* 新写入的内容会覆盖原文件内容
- Context.MODE_APPEND
* 只能被本应用读写
* 新写入的内容会追加到原文件内容后面
- Context.MODE_READABLE
* 允许其他应用读取,不可以写入
* 新写入的内容会覆盖原文件内容
- Context.MODE_WRITEABLE
* 允许其他应用写入,不可以读取
* 新写入的内容会覆盖原文件内容
(如果要求其他应用可以对文件进行读和写,那就Context.MODE_READABLE + Context.MODE_WRITEABLE)
* 存储到/data/data/包名/files/文件名
2> 访问
* context.openFileInput(name)
* 默认访问/data/data/包名/files/文件名
* 通过context.getFilesDir()可以获取/data/data/包名/files这个路径
* 通过context.getCacheDir()可以获取/data/data/包名/cache这个路径
3> 特点:
* 存储的文件不能太大
* 不依赖于SDCard
* 当应用被卸载了,/data/data/包名 这个目录也会被删除
2.SDCard
1> 检测SDCard状态
说明SDCard是可用的:Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
2> 往SDCard写入内容
* 先添加权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
* 得到SDCard根路径: File rootDir = Environment.getExternalStorageDirectory();
* 生成输出流:
File file = new File(rootDir, fileName);
FileOutputStream fos = new FileOutputStream(file);
下载视频代码
- 我的android 第9天 - 文件存储
- 我的android 第12天 - 嵌入式关系型SQLite数据库存储数据
- 从J2EE转向Android的第九天-----文件存储
- Android攻城狮的第二门课(第3季)第3章 数据存储之文件存储
- 我的android 第4天 - Dialog
- 我的android 第8天 - 单元测试
- 我的android 第11天 - SharedPreferences
- android文件的存储
- Android 的文件存储
- android 的文件存储
- Android的文件存储
- Android 文件的存储
- Android的简单文件存储
- Android存储文件的方法
- 【android】文件存储的途径
- Android的文件存储方式
- Android 文件的存储读取
- Android 文件的存储读取
- 小记:删除字符串空格的3种方法所引发的对C library 中库函数的思考
- RAID的概念和RAID对于SQL性能的影响
- 与广州传智播客Java培训中心共同打响就业保卫战
- 没有基础也可以参加广州传智播客.NET培训
- Ubuntu终端下显示乱码
- 我的android 第9天 - 文件存储
- Java的System.getProperty()方法可以获取的值
- 【转】github简单使用教程
- jQuery权威指南读书笔记2-jQuery 选择器
- 扩展了JQUERY.EASYUI功能的几个JS
- 学习程序设计的初学者应该选择的语言
- c时间日期与时间戳的转换
- php curl_multi_init使用
- IT部门如何以更少的资源来做更多的事?