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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值