Android文件存储

1.内部存储(Internal Storage)

内部存储会随着应用被卸载而清除。
通过getFilesDir()getCacheDir()可以得到内部文件路径和缓存路径。

/data/data/${package}/files

/data/data/${package}/cache

2.外部存储(External Storage)

外部存储需要权限,但是在4.4(API 19)以上,外部存储中的私有存储不需要权限
所以如果你只需要用私有存储,可以这样写。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />

1.私有存储(卸载应用时会被清除,跟内部存储有点像)

主要方法如下。
getXXXFilesDir(type)参数type可以为null

	getExternalCacheDir();
	getExternalFilesDir(null);
	/*
	*以下的getXXXDirs是同时获取内部存储卡和外部存储卡(SD卡)
	*返回值为一个数组
	*下面两个方法在API19以上才能用,所以需要用supportV4中的方法
	*/
	getExternalCacheDirs();
	getExternalFilesDirs(null);
	//supportV4中的方法
	ContextCompat.getExternalFilesDirs(this, null);
	ContextCompat.getExternalCacheDirs(this);

通过测试得到的私有缓存路径和私有文件路径如下:

/storage/emulated/0/Android/data/${package}/files

/storage/emulated/0/Android/data/${package}/cache

2.公有存储(卸载应用时不会被清除)

下面的两个方法可以获取外部存储路径。
其中getExternalStoragePublicDirectory(type)一般用来获取系统的目录,比如Download,DCIM,Music。
参数type不能为null

Environment.getExternalStorageDirectory();
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);

比如,以下代码在系统的Pictures目录下创建了一个MyPhoto文件夹

Environment.getExternalStoragePublicDirectory(
            Environment.DIRECTORY_PICTURES), "MyPhoto");
posted @ 2015-05-09 12:32  chace  阅读(2034)  评论(0编辑  收藏  举报