原文地址:
http://developer.android.com/intl/zh-cn/reference/android/os/Environment.html#getExternalStoragePublicDirectory%28java.lang.String%29
public static File getExternalStoragePublicDirectory (String type)
为放置一个特殊类型的文件获得顶级的public的外部存储路径。因为这是一般用户放置和管理他们自己文件的位置,所以你需要很小心的知道你把什么放在这个位置,确保你不会删除他们的文件或者妨碍他们自己的
组织结构。
在多用户设备(由UserManager描述),每个用户有他们自己的独立外部存储。应用
只能够有权使用正在运行的用户的外部存储。
这是一段在public外部存储上操作图片的标准编码例子。
void createExternalStoragePublicPicture() {
// 在用户的public图片路径下创建一个我们需要放置我们的图片的路径
// 注意,对于你放置在这的内容你需要很小心,因为用户通常管理这些文件。
// 对于应用的图片和其他媒体考虑使用 Context.getExternalMediaDir().
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");
try {
//确保图片路径存在
path.mkdirs();
// 非常简单的代码,把应用资源的图片copy为外部存储文件。
// 注意编码没有错误检查,并且假设图片很小(不试图在块中对他做copy)
// 注意如果外置存储当前没有被挂载,会是失败的。
InputStream is = getResources().openRawResource(R.drawable.balloons);
OutputStream os = new FileOutputStream(file);
byte[] data = new byte[is.available()];
is.read(data);
os.write(data);
is.close();
os.close();
// 告知媒体扫描关于这个,以便可以让用户立即获得。
MediaScannerConnection.scanFile(this,
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.i("ExternalStorage", "Scanned " + path + ":");
Log.i("ExternalStorage", "-> uri=" + uri);
}
});
} catch (IOException e) {
// 不能穿件文件,例如因为外置存储没有被挂载。
Log.w("ExternalStorage", "Error writing " + file, e);
}
}
void deleteExternalStoragePublicPicture() {
// 在用户public的图片目录下创建一个我们要放置图片的路径。
//如果没有挂载侧失败
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");
file.delete();
}
boolean hasExternalStoragePublicPicture() {
//在用户public的图片目录下创建一个我们要放置图片的路径并检查文件是否存在。
//如果没有被挂载则图片不存在。
File path = Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES);
File file = new File(path, "DemoPicture.jpg");
return file.exists();
}
Context.getExternalMediaDir() :http://stackoverflow.com/questions/11908261/what-is-context-getexternalmediadir
参数
type:存储目录返回的类型. 为以下这些类型 DIRECTORY_MUSIC
, DIRECTORY_PODCASTS
, DIRECTORY_RINGTONES
, DIRECTORY_ALARMS
, DIRECTORY_NOTIFICATIONS,
DIRECTORY_PICTURES
, DIRECTORY_MOVIES
, DIRECTORY_DOWNLOADS
, or DIRECTORY_DCIM
. 不能为空
返回值
- 返回目录的路径.注意路径也许不存在,所以在使用前你必须确保他是存在的,例如使用
File.mkdirs()
.