`

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

    ListView多选.txt getCacheDir的用法 代码

    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...

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

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

    Android开发之删除项目缓存的方法

    本文实例讲述了Android开发之删除项目缓存的方法。分享给大家供大家参考,具体如下: 如何删除项目的缓存: getCacheDir()能够得到当前项目的缓存地址 在项目中经常会使用到WebView 控件,当加载html 页面时,会在/...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

    Google Android SDK开发范例大全的目录

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

    Google+Android+SDK开发范例大全

    2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色常数的方法 3.3 更改TextView文字颜色...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——...

    Google Android sdk 开发范例大全 部分章节代码

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

    Google Android SDK 开发范例大全01

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

    Google Android SDK 开发范例大全02

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

    Google Android SDK开发范例大全(完整版)

    4.22 加载手机磁盘里的图文件——使用decodeFile方法 4.23 动态放大缩小ImageView里的图片——运用Matrix对象来缩放图文件 4.24 动态旋转图片——Bitmap与Matrix旋转ImageView 4.25 猜猜我在想什么——RadioButtonID...

Global site tag (gtag.js) - Google Analytics