getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()区,有需要的朋友可以参考下。
getCacheDir()方法用于获取/data/data/<application package>/cache目录
getFilesDir()方法用于获取/data/data/<application package>/files目录
应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置->应用->应用详情里面的”清除数据“与”清除缓存“选项
如果要保存下载的内容,就不要放在以上目录下
较优秀的程序都会专门写一个方法来获取缓存地址,如下所示:
publicStringgetDiskCacheDir(Contextcontext){ StringcachePath = null; //Environment.getExtemalStorageState() 获取SDcard的状态 //Environment.MEDIA_MOUNTED 手机装有SDCard,并且可以进行读写 if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()) ||!Environment.isExternalStorageRemovable()){ cachePath=context.getExternalCacheDir().getPath(); }else{ cachePath=context.getCacheDir().getPath(); } returncachePath; }
可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是/sdcard/Android/data/<application package>/cache 这个路径,而后者获取到的是 /data/data/<application package>/cache 这个路径。
文件的新建和读写:
File saveFile=new File("/sdcard/zhzhg.txt"); 或:File sdCardDir=new File("/sdcard");//获取SD卡目录 File saveFile=new File(sdCardDir,"zhzhg.txt"); FileOutputStream outStream = new FileOutputStream(saveFile); outStream.write("文件的读写".getBytes()); outStream.close();
Environment.getDataDirectory().getPath(): /data
Environment.getDownloadCacheDirectory().getPath() : /cache
Environment.getExternalStorageDirectory().getPath(): /mnt/sdcard
Environment.getRootDirectory().getPath() : /system
Context.getCacheDir().getPath() : /data/data/com.zhd/cache
Context.getExternalCacheDir().getPath() : /mnt/sdcard/Android/data/com.zhd/cache
Context.getFilesDir().getPath() : /data/data/com.zhd/files
Context.getObbDir().getPath() : /mnt/sdcard/Android/obb/com.zhd
Context.getPackageName() : com.zhd
Context.getPackageCodePath() : /data/app/com.zhd-1.apk
Context.getPackageResourcePath() : /data/app/com.zhd-1.apk
相关推荐
ListView多选.txt getCacheDir的用法 代码
File file new File context getCacheDir edit title+" txt" ; FileOutputStream fos; fos new FileOutputStream file ; fos write edit content getBytes ; fos close ; return...
先取内存数据,没有再从文件缓存中获取特点封装,继承其所有功能二级缓存内存缓存(采用SoftReference和LruCache,防止内存溢出)文件缓存(由ASimpleCache实现)默认使用SD卡缓存getCacheDir()获取的缓存文件较容易...
注: 在Activity中有 getFileDir() 和 getCacheDir(); 方法可以获得当前的手机自带的存储空间中的当前包文件的路径 getFileDir() —– /data/data/cn.xxx.xxx(当前包)/files getCacheDir() —– /data/data/...
GlideCatchSimple Glide缓存Simple 缓存路径的指定 缓存大小的获取 磁盘缓存清除(两种方法) ....getCacheDir() "/" GlideCatchConfig.GLIDE_CARCH_DIR))); } catch (Exception e) { e.printStackTrace();
Android文件存储 ... cacheDir=mContext.getExternalCacheDir().getPath(); }else { cacheDir=mContext.getCacheDir().getPath(); } fileOutputStream=new FileOutputStream(cacheDir+/+url); 这
1. 代码直接可用,程序带有简单界面 2. 保存的路径中项目文件下面:路径 getFileDir() ----- /data/data/...getCacheDir() ----- /data/data/cn.xxx.xxx(当前包)/cache 3. 我运行的版本为4.2.2和4.0.3均可以使用
一、获取设备存储路径 Android手机存储分为两个部分:内部存储和外部存储,内部存储一般是手机自带的存储空间,外部存储指外插SD卡...mContext.getCacheDir() /data/user/0/package name/cache mContext.getDir(spa
APIservice-Sample 带有 OkHttp + Retrofit 的任何 API 服务的样板样板代码此示例展示了为任何端点创建客户端的简单方法(使用 github)##To 在您自己的端点中设置使用 ... .setCacheDir(getCacheDir())
该缓存具有特定的容量和位置。 很少使用的文件会被主动使用逐出。 轻巧且易于使用。添加依赖步骤1.将JitPack存储库添加到您的构建文件中allprojects {repositories {.. .maven { url ' https://jitpack.io ' }}} ...
当您将更改推送到图像视图时,它开始下载、解码和设置。 Goster gst = Goster . with(context) .load(imageurl) .cache( true ) .fade( true ) .into(imageView); 您可以使用getSavingPath...
APK加载器 加载一个APK文件并使用反射来执行一个方法 用法 加载 APK: // Class you wan to load ... // Apk Name String appName = " StaticMath.apk " ;...String pathExternalStorage = ... getCacheDir() .
Activity(Context)Context.getCacheDir()方法用于获取/data/data/<package>/cache目录Context.getFilesDir()方法用于获取/data/data/<package>/files目录 Activity(Context)提供了openFileOutput(filename,mode)方法...
getCacheDir()能够得到当前项目的缓存地址 在项目中经常会使用到WebView 控件,当加载html 页面时,会在/data/data/应用package 目录下生成database与cache 两个文件夹。请求的url 记录是保存在WebViewCache.db,而url ...
通过缓存处理可以有效降低服务器的负荷,加快APP界面加载速度,提升用户体验。Retrofit + OkHttp缓存处理流程是这样的,请求响应之后会在data/data/packageName/cache下建立....getCacheDir(), responses); //设置缓存 10M
8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...
8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...
8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过网络播放MP3——Runnable存储FileOutputStream技巧 8.9 设置远程下载音乐为手机铃声——RingtoneManager与铃声存放路径 8.10 ...