Android 文件存储(一)Environment

来源:互联网 发布:mac用户名修改 编辑:程序博客网 时间:2024/06/02 02:50

1、常量

//与Environment.getExternalStorageState();返回的状态进行比较

String MEDIA_BAD_REMOVAL//SDCard卸载之前被删除时的存储状态。String MEDIA_CHECKING//如果SDCard存在并进行磁盘检查。String MEDIA_MOUNTED//如果SDCard存在,并在其安装读/写访问。String MEDIA_MOUNTED_READ_ONLY//表明对象权限为只读String MEDIA_NOFS//如果SDCard存在,但是为空,或正在使用不受支持的文件系统。String MEDIA_REMOVED//SDCard 不存在String MEDIA_SHARED//如果 SDCard 未安装 ,并通过 USB 大容量存储共享 String MEDIA_UNMOUNTABLE// 未知的存储状态,例如路径不支持String MEDIA_UNMOUNTED// SDCard 如果介质存在但无法安装存储状态。通常,如果介质上的文件系统损坏,则会发生这种情况。

比如判断SD卡是否存在,存在则获取sd卡路径:

    public String getSDPath() {        File sdDir = null;        boolean sdCardExist = Environment.getExternalStorageState()                .equals(android.os.Environment.MEDIA_MOUNTED);         if (sdCardExist) {            sdDir = Environment.getExternalStorageDirectory();        }        return sdDir.toString();    } 

2、领域

public static String DIRECTORY_ALARMS//系统提醒铃声存放的标准目录。public static String DIRECTORY_DCIM//相机拍摄照片和视频的标准目录。public static String DIRECTORY_DOWNLOADS//下载的标准目录。public static String DIRECTORY_MOVIES//电影存放的标准目录。public static String DIRECTORY_MUSIC//音乐存放的标准目录。public static String DIRECTORY_NOTIFICATIONS//系统通知铃声存放的标准目录。public static String DIRECTORY_PICTURES//图片存放的标准目录。public static String DIRECTORY_PODCASTS//系统广播存放的标准目录。public static String DIRECTORY_RINGTONES//系统铃声存放的标准目录。

3、方法

//Android data的目录        String dataPath = Environment.getDataDirectory().getPath();        //返回下载/缓存内容目录        String download = Environment.getDownloadCacheDirectory().getPath();        //获取Android根目录        String rootDirectory = Environment.getRootDirectory().getPath();        //返回主外部存储目录        String storageDirectory = Environment.getExternalStorageDirectory().getPath();        //获取顶级公共外部存储目录,以放置特定类型的文件        File storagePublicDirectory = Environment.getExternalStoragePublicDirectory("");        //返回主“外部”存储设备的当前状态。        String StorageState = Environment.getExternalStorageState();        //是否有外部存储设备。        boolean StorageEmulated = Environment.isExternalStorageEmulated();        //返回主“外部”存储设备是否可移动        boolean storageRemovable = Environment.isExternalStorageRemovable();        Log.v("tag", "dataPath  "+dataPath);        Log.v("tag", "download  "+download);        Log.v("tag", "rootDirectory  "+rootDirectory);        Log.v("tag", "storageDirectory  "+storageDirectory);        Log.v("tag", "storagePublicDirectory  "+storagePublicDirectory);        Log.v("tag", "StorageState  "+StorageState);        Log.v("tag", "StorageEmulated  "+StorageEmulated);        Log.v("tag", "storageRemovable  "+storageRemovable);

打印结果:

     dataPath  /data     download  /cache     rootDirectory  /system     storageDirectory  /storage/emulated/0     storagePublicDirectory  /storage/emulated/0     StorageState  mounted     StorageEmulated  true     storageRemovable  false

拓展:

别忘了权限 WRITE_EXTERNAL_STORAGE权限,并且从读取访问开始需要 READ_EXTERNAL_STORAGE权限,如果您持有写入权限,该权限将被自动授予。

从开始KITKAT,如果您的应用程序只需要存储内部数据,请考虑使用 getExternalFilesDir(String)或 getExternalCacheDir()不需要读取或写入权限。

0 0