美文网首页程序员
Android内部存储

Android内部存储

作者: CP9 | 来源:发表于2017-03-08 15:15 被阅读77次

默认情况下,保存到内部存储的文件是应用的私有文件,其他应用(和用户)不能访问这些文件。 当用户卸载您的应用时,这些文件也会被移除。

写入到内部存储

写入到\data\data\your package\files目录

通过ContextWrapper.getFilesDir()

        String s = "hello internal";
        File file = new File(getFilesDir(), "internal_file.txt");
        FileOutputStream out = null;
        try {
            out = new FileOutputStream(file);
            out.write(s.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (out == null)
                    return;
                out.flush();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

运行上述代码后,可以通过Tools—>Android—>Android Device MonitorDDMSFile Explorer查看data\data\your package\files目录下是否有internal_file文件,如果无法打开data目录,请查看android device monitor cannot open data folder。如下图:

storage_file_path.png

由于internal_file.txt文件pull不出来,我们可以使用adb shell cat命令查看文件内容,如下图:

internal_file_content.png

通过ContextWrapper.openFileOutput()

        String s = "hello internal";
        FileOutputStream out = null;
        try {
            out = openFileOutput("internal_file.txt", MODE_PRIVATE);
            out.write(s.getBytes());
        } catch (IOException e) { 
            e.printStackTrace();
        } finally {
            try {
                if (out == null)
                    return;
                out.flush();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

运行之后得到的结果和第一种方式一样,区别如下:

  • 通过第一种方式得到的internal_file.txt的权限如图:
internal_file_permission1.png
  • 而这种方式得到的internal_file.txt的权限如图:
internal_file_permission2.png

MODE_PRIVATE

将会创建文件(或替换具有相同名称的文件),并将其设为应用的私有文件,默认模式。


internal_file_content.png

MODE_WORLD_READABLE

MODE_WORLD_WRITEABLE
从 Android N 开始,使用这些常量将会导致引发 SecurityException。这意味着,面向 Android N 和更高版本的应用无法按名称共享私有文件,尝试共享“file://”URI 将会导致引发FileUriExposedException。 如果您的应用需要与其他应用共享私有文件,则可以将 FileProviderFLAG_GRANT_READ_URI_PERMISSION 配合使用。

MODE_APPEND

如果文件已存在,然后将数据写入现有文件的末尾


internal_file_content_append.png

写入到\data\data\your package\cache目录

通过ContextWrapper.getCacheDir()

与写入到files目录类似:


internal_cache_path.png

cache和files文件的区别

  • 当设备的内部存储空间不足或用户卸载您的应用时,Android 可能会删除缓存文件以回收空间。
  • 应该始终自行维护缓存文件,使其占用的空间保持在合理的限制范围内(例如 1 MB)
  • 点击CLEAR DATA会清除data\data\your package目录下的所有目录以及文件;点击CLEAR CACHE会清除data\data\your package\cache目录下的文件
    setting_apps.png

相关文章

  • Android storage

    Android存储结构android中的文件操作详解以及内部存储和外部存储彻底理解android中的内部存储与外部...

  • Android存储及路径

    Android存储及路径 Android手机存储分类 分为:内部存储和外部存储 如何区分内部存储和外部存储:可以从...

  • Android 内部存储和外部存储

    Android 存储可如下划分: 内部RAM 内部存储:内部ROM 外部存储:外部ROM和Sdcard 内部存储 ...

  • Android Scoped storage 分区存储

    Android存储目录 内部存储 getFilesDir - 应用内部存储 放在data/data/package...

  • SharedPreference与文件存储

    Android常用数据存储方式有SharedPreferences存储数据(虽然还是属于内部存储)、文件存储(内部...

  • Android 与文件相关的知识

    文章出自:android中的文件操作详解以及内部存储和外部存储 内部存储(internal storage) 内部...

  • 010.Android中的存储文件目录

    参考文件:彻底了解android中的内部存储与外部存储Android中关于内部存储的一些重要函数

  • Android中存储目录

    Android中存储目录 对于一个APP来说,存储是分为应用内部存储和应用外存储。 内部存储 描述 应用内部存储是...

  • android存储

    Android中的存储 参考 彻底搞懂Android文件存储---内部存储,外部存储以及各种存储路径解惑[http...

  • android 内部和外部存储

    外部存储和内部存储介绍android手机的存储空间可以分为外部存储和内部存储,内部存储里面的空间比较小,里面的数据...

网友评论

    本文标题:Android内部存储

    本文链接:https://www.haomeiwen.com/subject/wvemgttx.html