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
相关推荐
Android提供了getCacheDir()和getExternalCacheDir()方法,用于创建应用专属的缓存目录,确保在清除缓存时能准确地删除相关文件。 DataCleanManager是一个在Android应用中常见的缓存管理组件,它提供了多种清除缓存...
获取内部存储缓存的路径可以通过`Context`对象的`getCacheDir()`方法,而外部存储缓存路径则是`getExternalCacheDir()`。 接下来,我们讨论如何获取应用程序的缓存大小。Android系统并没有提供直接获取缓存大小的...
1. `getFilesDir()` 和 `getCacheDir()`:这两个方法分别返回应用的内部文件目录和缓存目录,用于保存应用产生的文件。 2. `openFileOutput(String fileName, int mode)`:在内部存储创建或打开一个文件,`mode`...
但可以清理应用自己的外部存储缓存,通过`Context`的`getExternalCacheDir()`方法获取外部缓存目录,并类似地遍历和删除文件。 在实现清理功能时,需要注意以下几点: 1. **权限管理**:清理外部存储或系统缓存可能...
根据Android版本的不同,需要考虑使用getCacheDir()、getExternalCacheDir()、getFilesDir()等方法获取合适的存储路径,并且处理读写权限。 9. **异常处理**:在进行录音和播放过程中,可能出现各种异常,如文件不...
1. 使用`getExternalFilesDir()`和`getExternalCacheDir()`代替直接操作外部存储根目录,这样当应用卸载时,系统会自动清理相关文件。 2. 使用`Context.openFileInput()`和`Context.openFileOutput()`进行内部存储...
Android API提供`getExternalFilesDir()`和`getExternalCacheDir()`方法来访问特定于应用的外部存储目录。自Android 6.0(API级别23)起,需要运行时权限才能写入外部存储。 3. **SQLite数据库**:对于结构化数据,...
Android提供了`getCacheDir()`和`getExternalCacheDir()`等方法获取合适的存储位置。 7. **图片显示**:最后,下载的图片可以通过`ImageView`进行显示,可以使用`Picasso`、`Glide`等第三方库简化加载过程。 这个...
在Android上,我们可以使用getCacheDir()或getExternalCacheDir()获取存储位置。 3. **震动反馈**:为了提供与微信类似的体验,应用需要在录音开始和结束时触发设备的震动。在iOS中,我们使用...
1. **外部存储**:Android提供了getExternalFilesDir()和getExternalCacheDir()等方法,方便地将文件保存在外部存储上,同时保证了应用卸载时文件被清理。 2. **内部存储**:对于私有文件,可以使用getFilesDir()和...
Android提供了`getCacheDir()`和`getExternalCacheDir()`等方法获取存储路径,同时要注意权限问题。 6. 上传图片:最后,使用HTTP客户端(如OkHttp或Retrofit)将图片数据发送到服务器。这部分代码会涉及到网络请求...
- 使用`getExternalFilesDir()`和`getExternalCacheDir()`确保应用数据在应用卸载后能被正确清理。 通过以上方法,开发者可以有效地在Android 2.3及其后续版本中获取和管理内存目录和SDCard目录,为用户提供安全、...
通常会将图片保存在应用的私有存储目录下,如外部存储的getCacheDir()或getExternalCacheDir()路径。 6. **第三方库使用**:Picasso和Glide是两个广泛使用的Android图片加载库,它们都支持自动缓存、图片压缩、占位...
- 音乐文件可能存储在外部存储(SD卡)或者内部存储,需要使用`Context`的`getExternalCacheDir()`或`getCacheDir()`方法来获取合适的存储路径。 10. **权限管理**: - 在Android 6.0及以上版本,需要动态请求`...
2. **外部存储**:需要`WRITE_EXTERNAL_STORAGE`权限,使用`getExternalFilesDir()`或`getExternalCacheDir()`获取外部存储路径。用户可以访问这些文件,即使应用卸载后文件仍保留。 3. **ContentProvider**:对于...
Android 提供了 `getCacheDir()` 和 `getExternalCacheDir()` 方法来获取缓存目录。例如,将 Bitmap 转换为 JPEG 格式并保存: ```java File cacheFile = new File(getCacheDir(), "image.jpg"); ...
- **getCacheDir()**: 提供一个临时缓存目录,用于存储应用的临时文件,系统可能会在内存不足时删除这些文件。 2. **外部存储(可卸载存储)** - **Environment.getExternalStorageDirectory()**: 返回SD卡的根...
Android应用有自己的缓存目录,可以通过`Context.getCacheDir()`获取内部缓存目录,`Context.getExternalCacheDir()`获取外部缓存目录。如果应用需要在外部存储创建自定义缓存目录,可以使用`Context....
4. 缓存存储:Context.getCacheDir()和Context.getExternalCacheDir()分别用于内部和外部缓存。 三、文件权限 自Android 6.0(API级别23)起,运行时权限管理引入,读写外部存储需要在运行时请求WRITE_EXTERNAL_...