APP开发实战99-Android的内部存储(Internal Storage)

来源:互联网 发布:怎么在淘宝上买种子 编辑:程序博客网 时间:2024/05/17 06:57

26 Android的本地存储

(参考:http://blog.csdn.net/zhaokaiqiang1992)

26.1内部存储(InternalStorage)

内部存储空间特性:

这部分空间总是可用的。

这里的文件默认是只能被你的APP所访问的。

当用户卸载APP的时候,系统会把内部存储里面的相关文件都清除干净。

内部存储是想确保不被用户与其他APP所访问的最佳存储区域。

读写内部存储不需要权限。

 

保存到内部存储的方式:

     1 getFileDir() 通过此方法可以获取到你的APP内部存储的文件路径,路径为/data/data/pacgage_name/files

示例代码:

File file1 = new File(getFilesDir(), "getFilesDir.txt");  

        Log.d("TAG", "file1=" + file1.getAbsolutePath());  

  

        try {  

            OutputStream outputStream1 = new FileOutputStream(file1);  

            outputStream1.write("file".getBytes());  

            outputStream1.close();  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

运行输出的Log如下:

file1=/data/data/demo6.qz.com.demo6/files/getFilesDir.txt  

 

2 getCacheDir()通过此方法可以获取到你的APP内部缓存的文件路径,路径为/data/data/package_name/cache

示例代码:

File file2 = new File(getCacheDir(), "cache.txt");  

        Log.d("TAG", "file2=" + file2.getAbsolutePath());  

        try {  

            OutputStream outputStream1 = new FileOutputStream(file2);  

            outputStream1.write("cache".getBytes());  

            outputStream1.close();  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

运行输出的Log如下:

file1=/data/data/demo6.qz.com.demo6/files/getFilesDir.txt  

 

3 openFileOutput()通过此方法,可以获取到一个输出流,输出流的保存路径是/data/data/package_name/files,和getFileDir()的路径一致

示例代码如下

try {  

            OutputStream outputStream = openFileOutput("openFileOutput.txt", MODE_PRIVATE);  

            outputStream.write("openFileOutput".getBytes());  

            outputStream.close();  

        } catch (Exception e) {  

            e.printStackTrace();  

        }  

运行结果:

APP的内部存储目录是以APP的包名作为标识存放在Android文件系统的特定目录下[data/data/com.example.xx]。从技术上讲,如果设置文件为可读的,那么其他APP就可以读取这个APP的内部文件。然而,其他APP需要知道此APP的包名与文件名。若是没有设置为可读或者可写,其他APP是没有办法读写的。因此只要使用MODE_PRIVATE模式,那么这些文件就不可能被其他APP所访问。

内部存储区域的数据在APP卸载的时候,会一块被删除,因此,可以在cache目录里面放置图片缓存。

cache与files的差别在于,如果手机的内部存储空间不够了,系统会自行选择cache目录进行删除,因此,不要把重要的文件放在cache文件里面,可以放置在files里面,因为这个文件只有在APP被卸载的时候才会被删除。

用户对APP进行更新操作时,内部存储区域的数据不会被删除,区别于被用户手动卸载。

0 0
原创粉丝点击