Android手机分为内部存储和外部存储,区分方法,外部存储意外的都是内部存储。
外部存储指代sdcard中的存储。外部存储不一定是要接入外插是sdcard。
现在智能手机都不对外接入插入式sdcard,所以不好区分内部存储和外部存储的概念,但不妨碍称内置的sdcard为外部存储。
通过OTG线,可以让手机连上u盘,接入读取更大空间。
应用产生的数据会有两部分,一部分会和系统文件存在于内部存储中,主要是应用的系统文件和数据文件,一部分会存在于内置的sdcard中,如比较大的视频文件,配置文件,图片文件等。
手机存储主要用于存储:
1.移动应用产生的数据包括WebView数据缓存,sqlite数据存,sharedpreferences存储数据等。
2.音频,视频,文档资源
3.系统文件一般不会存储在sdcard中,但系统的更新程序会存储在相对应的目录中。
大部分的应用app会将应用目录写到Android/data目录之下,但也有很多应用直接将应用目录创建到sdcard的根目录下。
区分app的专属文件和app的独立文件:
分享一下概念:
app专属文件,专属于某一app,如有专属格式的文档等
app独立文件,不只依靠某一app才能运行读取,创建文件的app删除后,独立文件任存在于内存中,如照片,通用格式视频等。
Android系统对于独立文件提供了特定的目录,这些了目录都是以DIRECTORY开头。
如音乐:DIRECTORY_MUSIC、如图片:DIRECTORY_PICTURES
独立文件的访问方式:
File sdCard=Environment.getExternalStorageDirectory();
File pictures=new File(sdCard,"Pictures");
或者:
File pictures=Environment.getExternalStoragePublicDirctory(Environment.DIRECTORY_PICTURES);
方法一用于访问指定目录下的资源,方法二用于访问Android提供给我们的公共目录下的资源
专属文件的访问方式:
File personalData=getExternalFilesDirs("应用目录地址或文件地址"),读取关于应用的数据文件或缓冲文件。
通过Environment获取的
Environment.getDataDirectory().getPath() : 获得根目录/data 内部存储路径
Environment.getDownloadCacheDirectory().getPath() : 获得缓存目录/cache
Environment.getExternalStorageDirectory().getPath(): 获得SD卡目录/mnt/sdcard(获取的是手机外置sd卡的路径)
Environment.getRootDirectory().getPath() : 获得系统目录/system
通过Context获取的
Context.getDatabasePath() :返回通过Context.openOrCreateDatabase 创建的数据库文件
Context.getCacheDir().getPath() : 用于获取APP的cache目录 /data/data/<application package>/cache目录
Context.getExternalCacheDir().getPath(): 用于获取APP的在SD卡中的cache目录/mnt/sdcard/Android/data/<application package>/cache
Context.getFilesDir().getPath() :用于获取APP的files目录 /data/data/<application package>/files
Context.getObbDir().getPath(): 用于获取APPSDK中的obb目录 /mnt/sdcard/Android/obb/<application package>
Context.getPackageName() : 用于获取APP的所在包目录
Context.getPackageCodePath() : 来获得当前应用程序对应的 apk 文件的路径
Context.getPackageResourcePath() : 获取该程序的安装包路径