getcontext.get cachedirr和getexternalcontext.get cachedirr的区别

8735人阅读
/jiezzy/archive//2462191.html
注: 在Activity中有 getFileDir() 和 getCacheDir(); 方法可以获得当前的手机自带的存储空间中的当前包文件的路径&
getFileDir() ----- /data/data/cn.xxx.xxx(当前包)/files&
getCacheDir() ----- /data/data/cn.xxx.xxx(当前包)/cache&
&&1.&编写文件读取与写入功能实现类&FileService &&&&&&&&package&cn.android. &&&&&&&&import&java.io.ByteArrayOutputS
&&&&&&import&java.io.FileInputS
&&&&&&import&java.io.FileOutputS
&&&&&&&&import&android.content.C
&&&&&&import&android.util.L &&&&&&&&&&&&&&&&&&&public&class&FileService&{
&&&&&&&&&&&&public&static&final&String&TAG&=&&FileService&;
&&&&&&&&&&private&Context& &&&&&&&&&&&&&&&&&&&&&&public&FileService(Context&context)&{
&&&&&&&&&&&&&&this.context&=&
&&&&&&&&&&} &&&&&&&&&&&&&&&&&&&&&&&&&&&&public&void&save(String&fileName,&String&content)&throws&Exception&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(!fileName.endsWith(&.txt&))&{
&&&&&&&&&&&&&&&&&&fileName&=&fileName&+&&.txt&; &&&&&&&&&&&&&&} &&&&&&&&&&&&&& &&&&&&&&&&&&&&byte[]&buf&=&fileName.getBytes(&iso8859-1&);
&&&&&&&&&&&&&& &&&&&&&&&&&&&&Log.e(TAG,&new&String(buf,&utf-8&));
&&&&&&&&&&&&&& &&&&&&&&&&&&&&fileName&=&new&String(buf,&utf-8&);
&&&&&&&&&&&&&& &&&&&&&&&&&&&&Log.e(TAG,&fileName); &&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&FileOutputStream&fos&=&context.openFileOutput(fileName,&context.MODE_PRIVATE); &&&&&&&&&&&&&&fos.write(content.getBytes()); &&&&&&&&&&&&&&fos.close(); &&&&&&&&&&} &&&&&&&&&&&&&&&&&&&&&&&&&&&&public&String&read(String&fileName)&throws&Exception&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if&(!fileName.endsWith(&.txt&))&{
&&&&&&&&&&&&&&&&&&fileName&=&fileName&+&&.txt&; &&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&FileInputStream&fis&=&context.openFileInput(fileName); &&&&&&&&&&&&&&ByteArrayOutputStream&baos&=&new&ByteArrayOutputStream();
&&&&&&&&&&&&&&&&byte[]&buf&=&new&byte[1024];
&&&&&&&&&&&&&&int&len&=&0;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&while&((len&=&fis.read(buf))&!=&-1)&{
&&&&&&&&&&&&&&&&&&baos.write(buf,&0,&len); &&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&fis.close(); &&&&&&&&&&&&&&baos.close(); &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&return&baos.toString();
&&&&&&&&&&&&} &&&&&&&&} &&&&2.&编写Activity类: &&&&&&package&cn.android. &&&&&&&&import&android.app.A &&&&&&import&android.os.B &&&&&&import&android.util.L &&&&&&import&android.view.V &&&&&&import&android.widget.B
&&&&&&import&android.widget.EditT
&&&&&&import&android.widget.T &&&&&&import&cn.android.service.FileS
&&&&&&&&public&class&TestAndroidActivity&extends&Activity&{
&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&private&FileService&fileService&=&new&FileService(this);
&&&&&&&&&&&&&&&&&&&&private&EditText&fileNameT
&&&&&&&&&&&&&&&&&&&&private&EditText&contentT
&&&&&&&&&&&&&&&&&&&&private&Toast& &&&&&&&&&&&& &&&&&&&&&&@Override&&&&&&&&&&public&void&onCreate(Bundle&savedInstanceState)&{
&&&&&&&&&&super.onCreate(savedInstanceState);
&&&&&&&&&&setContentView(R.layout.main); &&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&Button&button&=&(Button)this.findViewById(R.id.button);
&&&&&&&&&&Button&read&=&(Button)this.findViewById(R.id.read);
&&&&&&&&&&fileNameText&=&(EditText)&this.findViewById(R.id.filename);
&&&&&&&&&&contentText&=&(EditText)&this.findViewById(R.id.content);
&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&button.setOnClickListener(new&View.OnClickListener()&{
&&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&&&public&void&onClick(View&v)&{
&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&String&fileName&=&fileNameText.getText().toString(); &&&&&&&&&&&&&&&&&&&&&&String&content&=&contentText.getText().toString(); &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(isEmpty(fileName))&{
&&&&&&&&&&&&&&&&&&&&&&&&&&toast&=&Toast.makeText(TestAndroidActivity.this,&R.string.empty_filename,&Toast.LENGTH_LONG);
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.setMargin(RESULT_CANCELED,&0.345f);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&& &&&&&&&&&&&&&&&&&&&&&&&&&&Log.w(fileService.TAG,&&The&file&name&is&empty&);
&&&&&&&&&&&&&&&&&&&&&&&&&&return; &&&&&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(isEmpty(content))&{
&&&&&&&&&&&&&&&&&&&&&&&&&&toast&=&Toast.makeText(TestAndroidActivity.this,&R.string.empty_content,&Toast.LENGTH_LONG);
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.setMargin(RESULT_CANCELED,&0.345f);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&& &&&&&&&&&&&&&&&&&&&&&&&&&&Log.w(fileService.TAG,&&The&file&content&is&empty&);
&&&&&&&&&&&&&&&&&&&&&&&&&&return; &&&&&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&try&{ &&&&&&&&&&&&&&&&&&&&&&&&&&fileService.save(fileName,&content); &&&&&&&&&&&&&&&&&&&&&&&&&&toast&=&Toast.makeText(TestAndroidActivity.this,&R.string.success,&Toast.LENGTH_LONG);
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.setMargin(RESULT_CANCELED,&0.345f);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&& &&&&&&&&&&&&&&&&&&&&&&&&&&Log.i(fileService.TAG,&&The&file&save&successful&);
&&&&&&&&&&&&&&&&&&&&&&}&catch&(Exception&e)&{
&&&&&&&&&&&&&&&&&&&&&&&&&&toast&=&Toast.makeText(TestAndroidActivity.this,&R.string.fail,&Toast.LENGTH_LONG);
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.setMargin(RESULT_CANCELED,&0.345f);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&& &&&&&&&&&&&&&&&&&&&&&&&&&&Log.e(fileService.TAG,&&The&file&save&failed&);
&&&&&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&} &&&&&&&&&&}); &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&&&&&&&&&&&read.setOnClickListener(new&View.OnClickListener()&{
&&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&&&&&public&void&onClick(View&v)&{
&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String&fileName&=&fileNameText.getText().toString(); &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&if(isEmpty(fileName))&{
&&&&&&&&&&&&&&&&&&&&&&&&&&toast&=&Toast.makeText(TestAndroidActivity.this,&R.string.empty_filename,&Toast.LENGTH_LONG);
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.setMargin(RESULT_CANCELED,&0.345f);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&& &&&&&&&&&&&&&&&&&&&&&&&&&&Log.w(fileService.TAG,&&The&file&name&is&empty&);
&&&&&&&&&&&&&&&&&&&&&&&&&&return; &&&&&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&try&{ &&&&&&&&&&&&&&&&&&&&&&&&&&contentText.setText(fileService.read(fileName)); &&&&&&&&&&&&&&&&&&&&&&&&&&toast&=&Toast.makeText(TestAndroidActivity.this,&R.string.read_success,&Toast.LENGTH_LONG);
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.setMargin(RESULT_CANCELED,&0.345f);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&& &&&&&&&&&&&&&&&&&&&&&&&&&&Log.i(fileService.TAG,&&The&file&read&successful&);
&&&&&&&&&&&&&&&&&&&&&&}&catch&(Exception&e)&{
&&&&&&&&&&&&&&&&&&&&&&&&&&toast&=&Toast.makeText(TestAndroidActivity.this,&R.string.read_fail,&Toast.LENGTH_LONG);
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.setMargin(RESULT_CANCELED,&0.345f);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&& &&&&&&&&&&&&&&&&&&&&&&&&&&Log.e(fileService.TAG,&&The&file&read&failed&);
&&&&&&&&&&&&&&&&&&&&&&} &&&&&&&&&&&&&&&&&&} &&&&&&&&&&}); &&&&&&&&&& &&&&&&&&&& &&&&&&&&&&} &&&&&&&&&& &&&&&&&&&&&&&&&&&&&&private&boolean&isEmpty(String&s)&{
&&&&&&&&&&if(s&==&null&||&&&.equals(s.trim()))&{
&&&&&&&&&&&&&&return&true;
&&&&&&&&&&} &&&&&&&&&&return&false;
&&&&&&&&&&} &&&&&&&&&& &&&&&&}&&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:448846次
积分:4083
积分:4083
排名:第7436名
原创:33篇
转载:219篇
评论:35条
(1)(1)(2)(1)(1)(1)(1)(1)(1)(3)(1)(2)(9)(7)(2)(24)(81)(26)(8)(2)(2)(1)(1)(1)(3)(2)(6)(4)(1)(1)(3)(6)(2)(1)(1)(2)(4)(1)(5)(6)(7)(15)(2)Android(数据存储与IO)(14)
Activity提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data//cache目录
getFilesDir()方法用于获取/data/data//files目录
//==================================================
将文件写入SD卡内:
获取SDCard的状态:
Environment.getExtemalStorageState()
Environment.MEDIA_MOUNTED手机装有SDCard,并且可以进行读写
获取SDCard的目录:Environment.getExtemalStorageDirectory()
//=============================================
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();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:65103次
积分:1501
积分:1501
排名:千里之外
原创:71篇
转载:124篇
评论:14条
毕业院校: 长沙学院
(1)(5)(1)(6)(11)(21)(1)(5)(10)(24)(9)(2)(9)(3)(18)(41)(2)(3)(20)(1)(2)getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir() 解析
getCacheDir() &方法用于获取 & /data/data/&application package&/cache目录
getFilesDir() & 方法用于获取 & /data/data/&application package&/files目录
Context.getExternalFilesDir() & 方法可以获取到 & & SDCard/Android/data/你的应用的包名/files/ 目录, 一般放一些长时间保存的数据
Context.getExternalCacheDir() &方法可以获取到 & &SDCard/Android/data/你的应用包名/cache/目录, 一般存放临时缓存数据
应用程序在运行的过程中如果需要向手机上保存数据,一般是把数据保存在SDcard中的。
大部分应用是直接在SDCard的根目录下创建一个文件夹,然后把数据保存在该文件夹中。
这样当该应用被卸载后,这些数据还保留在SDCard中,留下了垃圾数据。
如果你想让你的应用被卸载后,与该应用相关的数据也清除掉,该怎么办呢?
通过Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 目录,一般放一些长时间保存的数据
通过Context.getExternalCacheDir()方法可以获取到 SDCard/Android/data/你的应用包名/cache/目录,一般存放临时缓存数据
如果使用上面的方法,当你的应用在被用户卸载后,SDCard/Android/data/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置-&应用-&应用详情里面的”清除数据“与”清除缓存“选项
较优秀的程序都会专门写一个方法来获取缓存地址,如下所示:
public String getDiskCacheDir(Context context) {
String cachePath =
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable()) {
cachePath = context.getExternalCacheDir().getPath();
cachePath = context.getCacheDir().getPath();
return cacheP
可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是&/sdcard/Android/data/&application package&/cache
这个路径,而后者获取到的是 /data/data/&application package&/cache 这个路径。
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/com.my.app-1.apk
getPackageResourcePath() = /data/app/com.my.app-1.apk
getCacheDir() = /data/data/com.my.app/cache
getDatabasePath(“test”) = /data/data/com.my.app/databases/test
getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.my.app/app_test
getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache
getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.my.app/files/test
getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files
getFilesDir() = /data/data/com.my.app/files
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:50926次
积分:1200
积分:1200
排名:千里之外
原创:72篇
(1)(2)(2)(4)(2)(8)(14)(5)(5)(1)(5)(4)(8)(4)(9)(2)android(34)
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/你的应用的包名/ 这个目录下的所有文件都会被删除,不会留下垃圾信息。
而且上面二个目录分别对应 设置-&应用-&应用详情里面的”清除数据“与”清除缓存“选项
如果要保存下载的内容,就不要放在以上目录下
较优秀的程序都会专门写一个方法来获取缓存地址,如下所示
public String getDiskCacheDir(Context context) {
String cachePath =
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
|| !Environment.isExternalStorageRemovable()) {
cachePath = context.getExternalCacheDir().getPath();
cachePath = context.getCacheDir().getPath();
return cacheP
可以看到,当SD卡存在或者SD卡不可被移除的时候,就调用getExternalCacheDir()方法来获取缓存路径,否则就调用getCacheDir()方法来获取缓存路径。前者获取到的就是&
/sdcard/Android/data/&application package&/cache 这个路径,而后者获取到的是 /data/data/&application package&/cache 这个路径。
Environment.getDataDirectory() = /data
Environment.getDownloadCacheDirectory() = /cache
Environment.getExternalStorageDirectory() = /mnt/sdcard
Environment.getExternalStoragePublicDirectory(“test”) = /mnt/sdcard/test
Environment.getRootDirectory() = /system
getPackageCodePath() = /data/app/com.my.app-1.apk
getPackageResourcePath() = /data/app/com.my.app-1.apk
getCacheDir() = /data/data/com.my.app/cache
getDatabasePath(“test”) = /data/data/com.my.app/databases/test
getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.my.app/app_test
getExternalCacheDir() = /mnt/sdcard/Android/data/com.my.app/cache
getExternalFilesDir(“test”) = /mnt/sdcard/Android/data/com.my.app/files/test
getExternalFilesDir(null) = /mnt/sdcard/Android/data/com.my.app/files
getFilesDir() = /data/data/com.my.app/files
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:53056次
积分:1038
积分:1038
排名:千里之外
原创:42篇
转载:32篇
(1)(2)(2)(2)(4)(2)(3)(3)(8)(2)(4)(10)(7)(1)(9)(1)(4)(3)(1)(4)(3)(1)1030人阅读
Android(197)
Activity提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data//cache目录
getFilesDir()方法用于获取/data/data//files目录
//==================================================
将文件写入SD卡内:
获取SDCard的状态:
Environment.getExtemalStorageState()
Environment.MEDIA_MOUNTED手机装有SDCard,并且可以进行读写
获取SDCard的目录:Environment.getExtemalStorageDirectory()
//=============================================
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();
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:590128次
积分:8043
积分:8043
排名:第2480名
原创:237篇
转载:51篇
评论:98条
文章:11篇
阅读:18757
文章:13篇
阅读:46079
阅读:27306
文章:28篇
阅读:96926
文章:170篇
阅读:377670
(3)(6)(12)(8)(15)(2)(8)(14)(4)(4)(5)(10)(8)(18)(17)(20)(9)(11)(18)(41)(53)(4)}

我要回帖

更多关于 context.get cachedir 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信