android File的知识点一网打尽。
来源:互联网 发布:硕鼠 mac 打不开 编辑:程序博客网 时间:2024/05/05 16:35
存储Files
Android的File系统和其他平台上基于硬盘的File系统一样,Android官方文档表情,File适用于读取不能中断的大量数据。例如从网络上获取的数据(图片文件)
所有的Android设备都有2个存储空间,内部空间(internal)和外部空间(external),因为android早期系统的关系,不管怎么说,android的设备都具有2个存储空间,即外部空间和内部空间。
1.内部空间的特点:
a.它总是可访问的.(并且不需要任何权限声明)
b.默认情况下存储在此的File只能由你的app访问,其他访问不了,保存文件的时候可以申请让其他软件可访问。
c.当用户删除了该应用,这些文件会被自动删除。
2.外部空间的特点:
a.并不是总是可访问的。
b.你保存的文件可能会被外部访问。
c.只有当你把文件存储到
getExternalFilesDir()
.获取的路径下,应用卸载时才会自动删除该目录下的文件。否则不会自动删除应用中的文件。注意:尽管应用会默认的安装在内部空间中,但是你可以通过指定
android:installLocation 属性值将你的app安装到外部空间中。
一般应用占用的空间较大 可以通过此属性将文件 移动到外部空间中去。
A.对于外部存储设备拥有权限
<manifest ...> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ...</manifest>
如果只有读的操作可以只声明 <manifest ...> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> ...</manifest>
写操作权限默认包含读操作的权限,你不需要为了内部空间的读写操作声明任何权限,因为这是默认就有的。
B.存储到内部空间
1.调用getFileDir()方法。
2.调用getCacheDir()方法
。注意:这只是个临时的存储空间,当文件不需要的时候应该手动删除,而且
应该限制该文件夹下的存储容量。最好不要超过这上限值。例如设置上限值为1MB。
以免当系统内存过低时,该文件下的内容会被没有提示的情况
下被删除。
你可以通过
File file = new File(context.getFilesDir(), filename);
指定自己的内部文件目录,获取
你可以通过
openFileOutput()
to get a 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();}
如果你想缓存一些文件到内部缓存路径下,你应该使用createTempFile()。例如:public File getTempFile(Context context, String url) { File file; try { String fileName = Uri.parse(url).getLastPathSegment(); file = File.createTempFile(fileName, null, context.getCacheDir()); catch (IOException e) { // Error while creating file } return file;}
创建一个指定的文件名的文件在你的内部缓存目录下。内部存储空间的目录名是你的app的包名。如果将文件的模式设置为writeable或者
readable那么其他的app就可以通过 具体的文件路径访问你的文件了,如果设置成
MODE_PRIVATE
,将不能访问你的文件。 C.存储到外部空间
因为外部空间不总是可获取的,所以我们使用前应该先判断其他状态,可以通
过
getExternalStorageState()
. 1.public dir:该目录下面的文件不会随着app的卸载而消亡,其他的app也可访问。
用getExternalStoragePublicDirectory() 获取public dir.
2.private dir:当应用被卸载该目录下的文件也会删除。
用getExternalFilesDir()获取private dir. 用系统提供的常量如:DIRECTORY_RINGTONES获取文件 会被当做系统文件处理。
d.获取空闲的大小。
可以使用getFreeSize(),或者getTotalSize()获取可用的大小,和总大小。
如果不清楚大小,也可以通过捕捉IO。Exceltion异常来判断。
e.删除文件
可以通过file.delte()删除文件。
如果文件是存储在内部空间中,可以使用Context对象的 deleteFile(String name)方法
myContext.deleteFile(fileName);
来删除文件。
最好请注意:
当app被卸载时,有2部分的内容可能被自动清除。
1.内部空间的内容
2.外部空间位于getExternalFilesDir()目录下的内容。
还有就是请定期手动的删除用getCacheDir()创建的文件和定期删除其他已经不再需要的文件。
0 0
- android File的知识点一网打尽。
- File类的知识点
- python连载第六篇~python知识点一网打尽
- File类的常见知识点
- 一网打尽Android UI 控件教程
- Android开源网站一网打尽
- file知识点总结,自己学的
- 枚举和file类的知识点
- File IO流的知识点总结
- Android的琐碎知识点
- Android activity的知识点
- Android的小知识点
- Android的一些知识点
- 几个Android的知识点
- Android的Notification知识点
- 史上最全的英语连读规则一网打尽
- 网上店铺宣传的各种方法都一网打尽
- 一网打尽2013最常用的NoSQL数据库
- ZooKeeper编程指导
- 阅读Service源代码笔记
- TSP问题之状态压缩dp法
- spring 10 bean配置-通过FactoryBean配置bean
- [Android]一行代码加载GIF图
- android File的知识点一网打尽。
- Java内存管理机制
- 作用域
- 欢迎使用CSDN-markdown编辑器
- Java——spring mvc 文件下载
- mailto用法详解
- DIY pt2262遥控器和2272-m4接收器
- 安装.NET FRAMEWORK 4.5安装进度条回滚之后发生严重错误 代码0x80070643
- 多线程