Android Saving Files 简介 + 实例源码
来源:互联网 发布:人工智能 杨澜 电子书 编辑:程序博客网 时间:2024/06/15 13:34
首先我们要知道Android 内部存储 (Internel Storage)和 外部存储(External Storage) 的存储的分类。
Internel Storage : 通常就是手机自带的内存(Flash),这个存储空间,总是可用的,文件默认保存到
这里,卸载应用程序时,与程序相关的文件将一并被自动删除。
Externel Storage : 通常就是 SD 内存卡,可知他并不是总是可用的,它可能被卸载(unmount)。它总
是可读的(world-readable),应用程序被卸载时,系统自动删除通过 getExternalFilesDir()
得到的目录下的文件。
Internel 有读写限制,而Externel没有,但是在将来会被实现限制功能。
1.当使用 SD 卡时,要 加上 写(write) Permissions
<manifest ...> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ...</manifest>对于 读(Read) 权限,现在,所有的应用 有能力读而不需 Permissions
但是这个 Read 权限功能,将会在未来某个发布版本中添加,为了你的应用的可持续,所以有必要添加
Read 权限
<manifest ...> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ...</manifest>2.Internel Storage 文件操作
应用的存储路径被你应用的包名(package name)指定,
在Android 文件系统的特殊位置:
创建的文件存放在/data/data/<package name>/files目录下。
我们用 Context.getCacheDir() 或 Context.getFilesDir() 来获取。
其中 Context.getCacheDir()是得到的 cache 目录。
①创建文件
File file = new File(context.getFilesDir(), filename);②写文件 用 FileOutputStream 流对象操作
String filename = "myfile";String string = "Hello world!";FileOutputStream outputStream;try { outputStream = openFileOutput(filename, Context.MODE_PRIVATE); outputStream.write(string.getBytes()); outputStream.close();} catch (Exception e) { e.printStackTrace();}
PS: filename 不能包含路径,只是单纯的文件名。
FileOutputStream openFileOutput (String name, int mode)
可能抛出(throw) FileNotFoundExecption。MODE_PRIVATE
for the default operation, MODE_APPEND
to append to an existing file, MODE_WORLD_READABLE
and MODE_WORLD_WRITEABLE
to control permissions.③保存文件 Save a File
④删除文件 调用 Context
的deleteFile(): 方法。
myContext.deleteFile(fileName);
3.External Storage 文件操作
① 对于 SD 内存卡,我们操作之前要先检验一下是否挂载。
用 String Environment.getExternalStorageState() 得到状态。
/* Checks if external storage is available for read and write */public boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; } return false;}/* Checks if external storage is available to at least read */public boolean isExternalStorageReadable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; } return false;}
②External 文件分为 Public files 和 Private files 两种。
对于 External 目录的获取,
Public files 用
public static File getExternalStoragePublicDirectory (String type)
getExternalFilesDir() 或者 Context.getExternalFilesDir()
File file = new File(context.getExternalFilesDir( Environment.DIRECTORY_PICTURES), albumName);
File file = new File(Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES), albumName);当然目录可能不存在
if (!file.mkdirs()) { Log.e(LOG_TAG, "Directory not created");③
④调用文件对象的 delete() 方法。
myFile.delete();
最后
当你卸载应用程序时,系统将自动删除以下文件::
- 此程序存储在 Internal Storage 里的所有文件
- 此程序使用
getExternalFilesDir()保存在
. external storage 里的文件。 - 但是, 但是你需要手动删除 用getCacheDir() 创建的 cached files 和不再需要的其他文件。.
实例:Files_RW_SourceCode.zip
- Android Saving Files 简介 + 实例源码
- Android Training--Saving Files
- Saving Files
- Saving Files
- Saving Files
- Saving Files
- saving data - Saving Files
- Android 数据存储——Saving Files
- Saving Data --- Saving Files(二)
- [Android Training视频系列] 6.2 Saving Files(保存文件)
- Android学习笔记——保存文件(Saving Files)
- Saving Files(保存文件)
- Saving Files 保存文件
- 翻译Saving Files
- Saving Files保存文件 官方文档翻译
- Android源码目录简介
- Android源码目录简介
- android实例源码
- MFC对话框使用技巧
- 删除Lync记住的用户密码
- Android PackageManagerService详细分析
- 主机ping不通虚拟机,关于vmnet1,vmnet8
- log4j全面解析
- Android Saving Files 简介 + 实例源码
- 主机不联网实现虚拟机与主机Ping通
- 2012-11-22
- SQLlite(WebSQL)如何排序并分页查询(SQLlite语法)
- linux设备驱动的中断与并发请求事件
- 若n能被3整除,证明2^n除以7的余数为1
- 编程中无穷大常量的设定技巧
- SimpleDateFormat格式化日期
- jstl fn函数