Android中的内部存储与外部存储

来源:互联网 发布:pdf加水印软件 编辑:程序博客网 时间:2024/05/29 13:33
1.运行内存:Memory,用来运行程序,不能用来长期存储数据,一旦断电(关机),内存中所有数据将丢失。
2.内部存储:InternalStorage,这里所说的内部存储和我们平时的讲的内部存储是不一样的。内部存储位于系统的一个特殊位置,内部存储中根据不同程序包名生成对应该程序包名的目录,该目录中存储的数据文件只能被该程序访问(不同文件操作模式 访问权限不同)。当程序删除时,内部存储中对应该程序的目录下所有数据会被删除。内部存储容量小,尽量减少内部存储的使用,除非是存储重要的数据文件(SQLite和SharedPreferences都是存储在内部存储中。)
+++将不可见(没有root情况下)的内置存储卡数据统称为内部数据Context.getFilesDir():                   /data/user/0/YourAppPackage/filesContext.getCacheDir():                   /data/user/0/YourAppPackage/cacheSQLite:                                  /data/user/0/YourAppPackage/databasesSharedPreferences:                       /data/user/0/YourAppPackage/shared_prefsEnvironment.getDataDirectory():          /dataEnvironment.getRootDirectory():          /systemEnvironment.getDownloadCacheDirectory(): /cache
3.外部存储:ExternalStorage,外部存储其实就是我们平时讲的SD卡,然而现在大量的手机都是直接将SD卡固化到手机里面就认为这是内部存储,其实任然还是外部存储,和第二点的内部存储是不同性质的(注意:手机连电脑上或者用文件管理的软件可查看的都是外部存储,在不root情况下就可以查看)。
+++将没有root就可见的内置存储卡和外置存储卡数据统称为外部数据1.外部私有数据当程序卸载时,所对应的外部私有数据也会删除。Context.getExternalCacheDir():       /storage/emulated/0/Android/data/YourAppPackage/cache Context.getExternalFilesDir(null):   /storage/emulated/0/Android/data/YourAppPackage/filesContext.getExternalFilesDir("a"):    /storage/emulated/0/Android/data/YourAppPackage/files/a 2.外部公有数据Environment.getExternalStorageDirectory():          /storage/emulated/0Environment.getExternalStoragePublicDirectory("a"): /storage/emulated/0/a

PS: Google官方建议我们App的数据应该存储在外部存储的私有目录中该App的包名下,这样当用户卸载掉App之后,相关的数据会一并删除,如果你直接在外部公有存储创建了一个应用的文件夹,那么当你删除应用的时候,这个文件夹就不会被删除。


示例:

public class FilePathActivity extends BaseActivity {    private static final String TAG = "FilePathActivity";    private Context context;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_empty);        context = this;        Log.i(TAG, context.getFilesDir().toString());        Log.i(TAG, context.getCacheDir().toString());        Log.i(TAG, Environment.getDataDirectory().toString());        Log.i(TAG, Environment.getRootDirectory().toString());        Log.i(TAG, Environment.getDownloadCacheDirectory().toString());        Log.i(TAG, context.getExternalCacheDir().toString());        Log.i(TAG, context.getExternalFilesDir(null).toString());        Log.i(TAG, context.getExternalFilesDir("katherine").toString());                Log.i(TAG, Environment.getExternalStorageDirectory().toString());        Log.i(TAG, Environment.getExternalStoragePublicDirectory("katherine").toString());    }}
结果:

I/FilePathActivity: /data/user/0/com.katherine.du.everydaystudy/filesI/FilePathActivity: /data/user/0/com.katherine.du.everydaystudy/cacheI/FilePathActivity: /dataI/FilePathActivity: /systemI/FilePathActivity: /cacheI/FilePathActivity: /storage/emulated/0/Android/data/com.katherine.du.everydaystudy/cacheI/FilePathActivity: /storage/emulated/0/Android/data/com.katherine.du.everydaystudy/filesI/FilePathActivity: /storage/emulated/0/Android/data/com.katherine.du.everydaystudy/files/katherineI/FilePathActivity: /storage/emulated/0I/FilePathActivity: /storage/emulated/0/katherine





阅读全文
1 0
原创粉丝点击