getCacheDir用法
注: 在Activity中有 getFileDir() 和 getCacheDir(); 方法可以获得当前的手机自带的存储空间中的当前包文件的路径
getFileDir() ----- /data/data/cn.xxx.xxx(当前包)/files
getCacheDir() ----- /data/data/cn.xxx.xxx(当前包)/cache
- 1. 编写文件读取与写入功能实现类 FileService
- package cn.android.service;
- import java.io.ByteArrayOutputStream;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import android.content.Context;
- import android.util.Log;
- /**
- * 文件保存与读取功能实现类
- * @author Administrator
- *
- * 2010-6-28 下午08:15:18
- */
- public class FileService {
- public static final String TAG = "FileService";
- private Context context;
- //得到传入的上下文对象的引用
- public FileService(Context context) {
- this.context = context;
- }
- /**
- * 保存文件
- *
- * @param fileName 文件名
- * @param content 文件内容
- * @throws Exception
- */
- public void save(String fileName, String content) throws Exception {
- // 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀
- 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);
- // Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
- // Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
- // Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
- // MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
- // 如果希望文件被其他应用读和写,可以传入:
- // openFileOutput("output.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);
- FileOutputStream fos = context.openFileOutput(fileName, context.MODE_PRIVATE);
- fos.write(content.getBytes());
- fos.close();
- }
- /**
- * 读取文件内容
- *
- * @param fileName 文件名
- * @return 文件内容
- * @throws Exception
- */
- public String read(String fileName) throws Exception {
- // 由于页面输入的都是文本信息,所以当文件名不是以.txt后缀名结尾时,自动加上.txt后缀
- if (!fileName.endsWith(".txt")) {
- fileName = fileName + ".txt";
- }
- FileInputStream fis = context.openFileInput(fileName);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- byte[] buf = new byte[1024];
- int len = 0;
- //将读取后的数据放置在内存中---ByteArrayOutputStream
- while ((len = fis.read(buf)) != -1) {
- baos.write(buf, 0, len);
- }
- fis.close();
- baos.close();
- //返回内存中存储的数据
- return baos.toString();
- }
- }
- 2. 编写Activity类:
- package cn.android.test;
- import android.app.Activity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.EditText;
- import android.widget.Toast;
- import cn.android.service.FileService;
- public class TestAndroidActivity extends Activity {
- /** Called when the activity is first created. */
- //得到FileService对象
- private FileService fileService = new FileService(this);
- //定义视图中的filename输入框对象
- private EditText fileNameText;
- //定义视图中的contentText输入框对象
- private EditText contentText;
- //定义一个土司提示对象
- private Toast 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;
- }
- //当文件名和内容都不为空的时候,调用fileService的save方法
- //当成功执行的时候,提示用户保存成功,并记录日志
- //当出现异常的时候,提示用户保存失败,并记录日志
- 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;
- }
- //调用fileService的read方法,并将读取出来的内容放入到文本内容输入框里面
- //如果成功执行,提示用户读取成功,并记录日志。
- //如果出现异常信息(例:文件不存在),提示用户读取失败,并记录日志。
- 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");
- }
- }
- });
- }
- //编写一个isEmpty方法,判断字符串是否为空
- private boolean isEmpty(String s) {
- if(s == null || "".equals(s.trim())) {
- return true;
- }
- return false;
- }
- }
转载于:https://www.cnblogs.com/jiezzy/archive/2012/04/21/2462191.html
getCacheDir用法相关推荐
- Android Volley完全解析1:初识Volley的基本用法
原文链接:http://blog.csdn.net/guolin_blog/article/details/17482165,CSDN 郭霖 1. Volley简介 我们平时在开发Android应用的 ...
- 关于Retrofit用法
Retrofit用法 一. 简介 随着Google对HttpClient 摒弃,和Volley的逐渐没落,OkHttp开始异军突起,而Retrofit则对okHttp进行了强制依赖. Retrofit ...
- Fresco用法详解
版权声明:本文为延成原创文章,转载请标明出处 Fresco用法详解 经过在实际项目中多次的使用,本人在这做了一下简单总结,希望对初次使用和正在使用的你们有所帮助. 官方地址 官方github地址:ht ...
- fresco的基本用法
转载请标明出处:http://blog.csdn.net/android_ls/article/details/53137867 Fresco是Facebook开源Android平台上一个强大的图片加 ...
- Android数据存储几种方式用法总结
Android数据存储几种方式用法总结 1.概述 Android提供了5种方式来让用户保存持久化应用程序数据.根据自己的需求来做选择,比如数据是否是应用程序私有的,是否能被其他程序访问,需要多少数据存 ...
- c语言中external,static关键字用法
static用法: 在C中,static主要定义全局静态变量.定义局部静态变量.定义静态函数. 1.定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量.全局静态变量有 ...
- Pandas_transform的用法
先来看一个实例问题. 如下销售数据中展现了三笔订单,每笔订单买了多种商品,求每种商品销售额占该笔订单总金额的比例.例如第一条数据的最终结果为:235.83 / (235.83+232.32+107.9 ...
- Python中yield和yield from的用法
yield 后面接的是 future 对象 调用方 委托生成器 yield from 直接给出循环后的结果 yield from 委托者和子生成器直接通信 yield from 直接处理stopIte ...
- pytorch学习 中 torch.squeeze() 和torch.unsqueeze()的用法
squeeze的用法主要就是对数据的维度进行压缩或者解压. 先看torch.squeeze() 这个函数主要对数据的维度进行压缩,去掉维数为1的的维度,比如是一行或者一列这种,一个一行三列(1,3)的 ...
最新文章
- LeetCode Interleaving String(动态规划)
- LeetCode Median of Two Sorted Arrays (DFS)
- 记一次工作中的小BUG
- Aspnet Core 对 Resetful API版本的支持
- JAVA泛型--待续
- Python语法特点如注释规则、代码缩进、编码规范等
- 2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结
- 趣图:只有程序员才能看懂这个疫情号召
- centos7安装Hive2.3.0
- SimpleDateFormat线程不安全了?这里有5种解决方案
- 教你如何找网络上的图片素材
- python备份文件最简单案例_Python实现备份文件实例
- Bailian2727 还是采药问题【模拟】
- Zxw图纸,鑫制造图纸,蓝瑞图纸,猎人图纸,维修宝典,刚开通 的带维修案例平台
- GetWindowRect,GetClientRect,ScreenToClient MoveWindow SetWindowPos 用法说明
- 双输出基准电压电路/自己备忘
- ckplayer ajax,谁能帮我做一个脚本啊?能让这个网页视频播放可以拉动进度条 可以快进...
- 大数据战略上升为国家战略,悄悄告诉你大数据大牛都在读的8本书
- 修复我的世界ice服务器的指令,我的世界 基岩版:服务器清理命令
- python调用多级目录中的文件_python复制多层目录下的文件至其他盘符对应的目录中...
热门文章
- python rbf神经网络_原创,基于径向基函数(RBF)神经网络RBF网络的举例应用!
- 设计模式复习-装饰模式
- hdu3400 两重三分
- 【开发环境】为 Visual Studio Community 2013 版本安装中文语言包 ( 安装 Test Agents 2013 | 安装 Visual Studio 2013 简体中文 )
- 【EventBus】事件通信框架 ( 发送事件 | 判断发布线程是否是主线程 | 子线程切换主线程 | 主线程切换子线程 )
- 【错误记录】Android Studio 编译报错 ( AppCompat does not support the current theme features )
- 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 )
- 那些做的“不够好”的父母,他们可能已经做到了自己的100分
- 417 Pacific Atlantic Water Flow 太平洋大西洋水流
- phpstudy composer 安装YII2