ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

android 存储

2022-09-04 16:01:27  阅读:441  来源: 互联网

标签:directoryPath 存储 路径 context android dir SD


Android developer 数据和文件存储概览
Android getExternalStorageDirectory()和getExternalFilesDir()的区别
Android文件存储路径getFilesDir()与getExternalFilesDir的区别

作为一个开发者,我们经常需要通过缓存一些文件到SD卡中,常见的方式就是,通过:

File sdCard = Environment.getExternalStorageDirectory();

获取SD卡根目录,然后自定义文件/文件名进行文件存储.这样做法的结果就是,当手机安装了大量的app时,

SD卡根目录会迅速变得杂乱不堪。并且在API 6.0之后,根目录文件存储是需要用户授权的,就算你在

AndroidManifest.xml中配置了存储权限,用户不授权也是写不进去了.

SD卡读写权限:

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

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

外部存储

路径

其实,Google已经提供了最佳的外部存储方案,那就是统一路径为:

  • /Android/data/< package name >/files/… (该路径通常挂载在/mnt/sdcard/下)

调用方法

外部存储路径调用方法是:

  • context.getExternalFilesDir(dir).getAbsolutePath() //通过context调用,

参数dir为自自定义文件夹.

这个方法获得的文件存储路径适用于6.0以后系统,主要AndroidManifest.xml配置读写权限了,

就不需要用户再授权了.

以上,是关于外部存储的介绍,那么如果有些手机没有SD卡或者系统自身没有分配外部存储空间,时,

我们应该怎么缓存数据呢?

内部存储

那就需要用到内部存储了,内部存储的路径是:

路径

  • /data/data/< package name >/files/…

(该路径挂载在在手机自身存储目录)

调用方法

内部存储路径调用方法是:

  • context().getCacheDir().getAbsolutePath() //通过context调用

因此,正常开发中获取存储路径的方法是:

/**
* 
* @param context 上下文对象
* @param dir  存储目录
* @return
*/
public static String getFilePath(Context context,String dir) {
String directoryPath="";
//判断SD卡是否可用 
if (MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ) {
directoryPath =context.getExternalFilesDir(dir).getAbsolutePath() ;  
// directoryPath =context.getExternalCacheDir().getAbsolutePath() ;  
}else{
//没内存卡就存机身内存  
directoryPath=context.getFilesDir()+File.separator+dir;
// directoryPath=context.getCacheDir()+File.separator+dir;
}
File file = new File(directoryPath);  
if(!file.exists()){//判断文件目录是否存在  
file.mkdirs();  
} 
LogUtil.i("filePath====>"+directoryPath);
return directoryPath;
}

其中,getExternalCacheDir()与getCacheDir()的区别 与getExternalFilesDir()及getFilesDir()的区别相同,

前者只是在路径下自动建好了一个cach文件目录:/data/< package name >/files/cach/...

存储区别简明示意图如下:
image

本文转自:https://blog.csdn.net/losefrank/article/details/53464646

标签:directoryPath,存储,路径,context,android,dir,SD
来源: https://www.cnblogs.com/sunupo/p/16655265.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有