`

getCacheDir的用法

 
阅读更多

转载:

 

http://www.cnblogs.com/jiezzy/archive/2012/04/21/2462191.html

 

注:

在Activity中有 getFileDir() 和 getCacheDir(); 方法可以获得当前的手机自带的存储空间中的当前包文件的路径
getFileDir() ----- /data/data/cn.xxx.xxx(当前包)/files
getCacheDir() ----- /data/data/cn.xxx.xxx(当前包)/cache

 

  1. 1. 编写文件读取与写入功能实现类 FileService   
  2.   
  3.     package cn.android.service;   
  4.   
  5.     import java.io.ByteArrayOutputStream;   
  6.     import java.io.FileInputStream;   
  7.     import java.io.FileOutputStream;   
  8.   
  9.     import android.content.Context;   
  10.     import android.util.Log;   
  11.   
  12.     /**  
  13.      * 文件保存与读取功能实现类  
  14.      * @author Administrator  
  15.      *  
  16.      * 2010-6-28 下午08:15:18  
  17.      */  
  18.     public class FileService {   
  19.   
  20.         public static final String TAG = "FileService";   
  21.         private Context context;   
  22.   
  23.         //得到传入的上下文对象的引用   
  24.         public FileService(Context context) {   
  25.             this.context = context;   
  26.         }   
  27.   
  28.         /**  
  29.          * 保存文件  
  30.          *   
  31.          * @param fileName 文件名  
  32.          * @param content  文件内容  
  33.          * @throws Exception  
  34.          */  
  35.         public void save(String fileName, String content) throws Exception {   
  36.   
  37.             // 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀   
  38.             if (!fileName.endsWith(".txt")) {   
  39.                 fileName = fileName + ".txt";   
  40.             }   
  41.                
  42.             byte[] buf = fileName.getBytes("iso8859-1");   
  43.                
  44.             Log.e(TAG, new String(buf,"utf-8"));   
  45.                
  46.             fileName = new String(buf,"utf-8");   
  47.                
  48.             Log.e(TAG, fileName);   
  49.                
  50.             // Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND   
  51.             // Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。   
  52.             // Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。   
  53.             // MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。   
  54.             // 如果希望文件被其他应用读和写,可以传入:   
  55.             // openFileOutput("output.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);   
  56.   
  57.             FileOutputStream fos = context.openFileOutput(fileName, context.MODE_PRIVATE);   
  58.             fos.write(content.getBytes());   
  59.             fos.close();   
  60.         }   
  61.   
  62.         /**  
  63.          * 读取文件内容  
  64.          *   
  65.          * @param fileName 文件名  
  66.          * @return 文件内容  
  67.          * @throws Exception  
  68.          */  
  69.         public String read(String fileName) throws Exception {   
  70.   
  71.             // 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀   
  72.             if (!fileName.endsWith(".txt")) {   
  73.                 fileName = fileName + ".txt";   
  74.             }   
  75.   
  76.             FileInputStream fis = context.openFileInput(fileName);   
  77.             ByteArrayOutputStream baos = new ByteArrayOutputStream();   
  78.   
  79.             byte[] buf = new byte[1024];   
  80.             int len = 0;   
  81.   
  82.             //将读取后的数据放置在内存中---ByteArrayOutputStream   
  83.             while ((len = fis.read(buf)) != -1) {   
  84.                 baos.write(buf, 0, len);   
  85.             }   
  86.   
  87.             fis.close();   
  88.             baos.close();   
  89.   
  90.             //返回内存中存储的数据   
  91.             return baos.toString();   
  92.   
  93.         }   
  94.   
  95.     }   
 
  1. 2. 编写Activity类:   
  2.     package cn.android.test;   
  3.   
  4.     import android.app.Activity;   
  5.     import android.os.Bundle;   
  6.     import android.util.Log;   
  7.     import android.view.View;   
  8.     import android.widget.Button;   
  9.     import android.widget.EditText;   
  10.     import android.widget.Toast;   
  11.     import cn.android.service.FileService;   
  12.   
  13.     public class TestAndroidActivity extends Activity {   
  14.         /** Called when the activity is first created. */  
  15.            
  16.         //得到FileService对象   
  17.         private FileService fileService = new FileService(this);   
  18.         //定义视图中的filename输入框对象   
  19.         private EditText fileNameText;   
  20.         //定义视图中的contentText输入框对象   
  21.         private EditText contentText;   
  22.         //定义一个土司提示对象   
  23.         private Toast toast;   
  24.   
  25.            
  26.         @Override  
  27.         public void onCreate(Bundle savedInstanceState) {   
  28.         super.onCreate(savedInstanceState);   
  29.         setContentView(R.layout.main);   
  30.              
  31.         //得到视图中的两个输入框和两个按钮的对象引用   
  32.         Button button = (Button)this.findViewById(R.id.button);   
  33.         Button read = (Button)this.findViewById(R.id.read);   
  34.         fileNameText = (EditText) this.findViewById(R.id.filename);   
  35.         contentText = (EditText) this.findViewById(R.id.content);   
  36.            
  37.         //为保存按钮添加保存事件   
  38.         button.setOnClickListener(new View.OnClickListener() {   
  39.                 @Override  
  40.                 public void onClick(View v) {   
  41.                        
  42.                     String fileName = fileNameText.getText().toString();   
  43.                     String content = contentText.getText().toString();   
  44.                        
  45.                     //当文件名为空的时候,提示用户文件名为空,并记录日志。   
  46.                     if(isEmpty(fileName)) {   
  47.                         toast = Toast.makeText(TestAndroidActivity.this, R.string.empty_filename, Toast.LENGTH_LONG);   
  48.                         toast.setMargin(RESULT_CANCELED, 0.345f);                                      
  49.                         toast.show();      
  50.                         Log.w(fileService.TAG, "The file name is empty");   
  51.                         return;   
  52.                     }   
  53.                        
  54.                     //当文件内容为空的时候,提示用户文件内容为空,并记录日志。   
  55.                     if(isEmpty(content)) {   
  56.                         toast = Toast.makeText(TestAndroidActivity.this, R.string.empty_content, Toast.LENGTH_LONG);   
  57.                         toast.setMargin(RESULT_CANCELED, 0.345f);                                      
  58.                         toast.show();      
  59.                         Log.w(fileService.TAG, "The file content is empty");   
  60.                         return;   
  61.                     }   
  62.                        
  63.                     //当文件名和内容都不为空的时候,调用fileService的save方法   
  64.                     //当成功执行的时候,提示用户保存成功,并记录日志   
  65.                     //当出现异常的时候,提示用户保存失败,并记录日志   
  66.                     try {   
  67.                         fileService.save(fileName, content);   
  68.                         toast = Toast.makeText(TestAndroidActivity.this, R.string.success, Toast.LENGTH_LONG);   
  69.                         toast.setMargin(RESULT_CANCELED, 0.345f);                                      
  70.                         toast.show();      
  71.                         Log.i(fileService.TAG, "The file save successful");   
  72.                     } catch (Exception e) {   
  73.                         toast = Toast.makeText(TestAndroidActivity.this, R.string.fail, Toast.LENGTH_LONG);   
  74.                         toast.setMargin(RESULT_CANCELED, 0.345f);                                      
  75.                         toast.show();      
  76.                         Log.e(fileService.TAG, "The file save failed");   
  77.                     }   
  78.                        
  79.                 }   
  80.         });   
  81.            
  82.            
  83.         //为读取按钮添加读取事件   
  84.         read.setOnClickListener(new View.OnClickListener() {   
  85.                 @Override  
  86.                 public void onClick(View v) {   
  87.                        
  88.                     //得到文件名输入框中的值   
  89.                     String fileName = fileNameText.getText().toString();   
  90.                        
  91.                     //如果文件名为空,则提示用户输入文件名,并记录日志   
  92.                     if(isEmpty(fileName)) {   
  93.                         toast = Toast.makeText(TestAndroidActivity.this, R.string.empty_filename, Toast.LENGTH_LONG);   
  94.                         toast.setMargin(RESULT_CANCELED, 0.345f);                                      
  95.                         toast.show();      
  96.                         Log.w(fileService.TAG, "The file name is empty");   
  97.                         return;   
  98.                     }   
  99.                        
  100.                     //调用fileService的read方法,并将读取出来的内容放入到文本内容输入框里面   
  101.                     //如果成功执行,提示用户读取成功,并记录日志。   
  102.                     //如果出现异常信息(例:文件不存在),提示用户读取失败,并记录日志。   
  103.                     try {   
  104.                         contentText.setText(fileService.read(fileName));   
  105.                         toast = Toast.makeText(TestAndroidActivity.this, R.string.read_success, Toast.LENGTH_LONG);   
  106.                         toast.setMargin(RESULT_CANCELED, 0.345f);                                      
  107.                         toast.show();      
  108.                         Log.i(fileService.TAG, "The file read successful");   
  109.                     } catch (Exception e) {   
  110.                         toast = Toast.makeText(TestAndroidActivity.this, R.string.read_fail, Toast.LENGTH_LONG);   
  111.                         toast.setMargin(RESULT_CANCELED, 0.345f);                                      
  112.                         toast.show();      
  113.                         Log.e(fileService.TAG, "The file read failed");   
  114.                     }   
  115.                 }   
  116.         });   
  117.            
  118.            
  119.         }   
  120.            
  121.         //编写一个isEmpty方法,判断字符串是否为空   
  122.         private boolean isEmpty(String s) {   
  123.         if(s == null || "".equals(s.trim())) {   
  124.             return true;   
  125.         }   
  126.         return false;   
  127.         }   
  128.            
  129.     } 


分享到:
评论

相关推荐

    henry_7getCacheDir

    在Android开发中,`getCacheDir()` 是一个非常重要的方法,尤其对于管理和优化应用程序的内存使用至关重要。这个方法是Android SDK中的一个内置函数,属于 `Context` 类,它用于获取应用程序的缓存目录路径,这是一...

    oKHttp基本用法

    以上就是 OkHttp 的基本用法,包括 GET 和 POST 请求的同步与异步执行,以及上传键值对、JSON 数据和文件的方法。在实际项目中,你还可以根据需要进行更复杂的配置,例如设置自签名证书、HTTPS 代理等。了解并熟练...

    XUtils使用方法

    以下是对XUtils使用方法的详细讲解: **1. BitmapUtils图片缓存路径设置** BitmapUtils是XUtils中的图片处理工具类,它支持图片的加载、缓存以及显示。为了优化图片的加载体验,我们需要设置图片的缓存路径。首先...

    Gallery使用方法

    ### Gallery使用方法详解 #### 一、Gallery简介 Gallery 是 Android 开发中一个非常实用的控件,主要用于展示一系列图片,常用于相册或者产品图片的展示等场景。Gallery 默认会让当前图片居中显示,而当用户需要...

    volly的用法及注意点

    ### Volly的用法及注意点 #### 一、Volley简介与缓存管理 Volley是Google为Android平台提供的一款轻量级网络库,它能够帮助开发者更方便地进行HTTP请求并处理返回数据。Volley支持异步请求、图片加载、缓存管理等...

    Android代码-GlideCatchSimple

    磁盘缓存清除(两种方法) 内存缓存清除 可clone之后查看使用Simple Glide cache Simple. The cache path specified The cache size The disk cache (two ways) Memory cache to clearMay use Simple clone ...

    APKLoader:加载一个APK文件并使用反射来执行一个方法

    加载一个APK文件并使用反射来执行一个方法 用法 加载 APK: // Class you wan to load className = " com.ufc.methods.Sum " ; // Apk Name String appName = " StaticMath.apk " ; String pathExternalStorage...

    写数据到手机内存

    1. **获取内部存储路径**:Android提供了`getFilesDir()`和`getCacheDir()`方法来获取内部存储的文件目录。`getFilesDir()`返回的是应用专属的文件目录,适合存储持久性数据;`getCacheDir()`则用于存储缓存文件,...

    android APPCache

    获取内部存储缓存的路径可以通过`Context`对象的`getCacheDir()`方法,而外部存储缓存路径则是`getExternalCacheDir()`。 接下来,我们讨论如何获取应用程序的缓存大小。Android系统并没有提供直接获取缓存大小的...

    APIservice-Sample:任何带有 OkHttp + Retrofit 的 API 服务的样板代码示例

    带有 OkHttp + Retrofit 的任何 API 服务的样板样板代码此示例展示了为任何端点创建客户端的简单方法(使用 github)##To 在您自己的端点中设置使用 设置您的终点网址 public static final String WEB_API_...

    Android实现文件的保存与读取功能示例

    本示例将详细介绍如何使用Android提供的API来实现这一功能,特别是利用`getFileDir()`和`getCacheDir()`方法。 首先,Android系统为每个应用程序提供了两个主要的本地存储区域:一个是`getFilesDir()`返回的目录,...

    FileDmeo(CUNC)

    本教程将深入探讨“File存储”这一Android中常见的本地存储方式,并通过“FileDemo”这个示例项目来阐述其使用方法。让我们一起探索如何在Android中有效地利用File存储。 File存储是Android系统提供的一种基础存储...

    Android app缓存清理实现

    2. **文件遍历**:使用`File`类的`listFiles()`方法获取指定目录下的所有文件和子目录。对于每个文件,检查是否需要保留,例如,某些文件可能正在被使用或不允许删除。 3. **判断文件类型**:根据文件扩展名或者...

    Android文件存储

    使用`getFilesDir()`和`getCacheDir()`方法可以获取到内部存储的文件目录,前者用于存放持久化文件,后者则适用于临时缓存文件。 外部存储则更为开放,主要由`Environment.getExternalStorageDirectory()`提供,...

    Android 保存文件路径方法

    在 Android 中,保存图片可以使用 `getFilesDir()` 方法或 `getExternalFilesDir()` 方法,例如: `String path = mContext.getFilesDir().getAbsolutePath();` `path = path + File.separator + directoryName + ...

    android 文件管理

    内部存储的文件路径通常可以通过`getFilesDir()`或`getCacheDir()`方法获取。使用`openFileOutput()`和`openFileInput()`可以方便地读写文件。 2. **外部存储(SD卡)**:外部存储是用户可访问的公共存储区域,如SD...

    android一键清缓存杀进程Demo

    Android提供了`Context`类的`getCacheDir()`方法,用于获取应用程序的缓存目录。通过遍历这个目录,我们可以删除其中的所有文件。以下是一个简单的代码示例: ```java File cacheDir = getCacheDir(); if (cacheDir...

    android okHttp的简单使用

    通过上述示例,你已经掌握了OkHttp的基本用法,包括GET和POST请求,以及图片下载和文件上传。在实际应用中,还需要考虑错误处理、异步请求、超时设置等高级特性。同时,使用OkHttp配合Retrofit等库可以进一步简化...

    Android中没有插入SD情况下的文件写入和读取方法.zip

    内部存储路径可以通过`Context`对象的`getFilesDir()`或`getCacheDir()`方法获取。 2. 文件写入: - 使用`FileOutputStream`和`BufferedWriter`: 创建一个`File`对象,然后通过`openFileOutput()`方法创建一个`...

    Android开发 okhttp网络请求使用demo,包括上传文件方法封装

    总结来说,"Android开发 okhttp网络请求使用demo"是一个实用的学习资源,它涵盖了OkHttp的基础用法和文件上传。通过对这个demo的深入学习,开发者可以更好地理解和运用OkHttp来优化Android应用的网络性能。

Global site tag (gtag.js) - Google Analytics