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

本文实例讲述了Android实现文件的保存与读取功能。分享给大家供大家参考,具体如下:

注: 在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;
  }
}

3.文件布局文件:main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  >
  <TextView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="@string/filename"
  />
  <EditText
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:id="@+id/filename"
  />
  <TextView
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="@string/content"
  />
  <EditText
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:minLines="3"
   android:id="@+id/content"
  />
  <LinearLayout
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
   <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:text="@string/save"
   />
   <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/read"
    android:text="@string/read"
   />
  </LinearLayout>
</LinearLayout>

PS:由于我在测试这个功能的时候发现文件名无法使用中文(sdk2.2 + 模拟器),如果有哪为高手无意中浏览此文章后,能对这个问题予以指点,我将感激不尽。呵呵。

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android文件操作技巧汇总》、《Android编程之activity操作技巧总结》、《Android视图View技巧总结》、《Android操作SQLite数据库技巧总结》、《Android操作json格式数据技巧总结》、《Android数据库操作技巧总结》、《Android编程开发之SD卡操作方法汇总》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android
, 保存
, 文件
读取
caffe 示例实现、qt读取注册表示例、caffe示例实现之1、android 示例、android ashmem 示例,以便于您获取更多的相关知识。

时间: 2024-11-25 17:26:22

Android实现文件的保存与读取功能示例_Android的相关文章

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

本文实例讲述了Android实现文件的保存与读取功能.分享给大家供大家参考,具体如下: 注: 在Activity中有 getFileDir() 和 getCacheDir(); 方法可以获得当前的手机自带的存储空间中的当前包文件的路径 getFileDir() ----- /data/data/cn.xxx.xxx(当前包)/files getCacheDir() ----- /data/data/cn.xxx.xxx(当前包)/cache 1. 编写文件读取与写入功能实现类 FileServi

Android采用File形式保存与读取数据的方法_Android

本文实例讲述了Android采用File形式保存与读取数据的方法.分享给大家供大家参考,具体如下: 将数据直接以文件的形式保存在设备中,通过Context.openFileInput()方法获得标准的JAVA文件输入流(FileInputStream),通过Context.openFileOutput()方法获得标准的JAVA文件输出流(FileOutputStream) 写数据到file文件中 findViewById(R.id.file).setOnClickListener(new But

Android采用File形式保存与读取数据的方法

本文实例讲述了Android采用File形式保存与读取数据的方法.分享给大家供大家参考,具体如下: 将数据直接以文件的形式保存在设备中,通过Context.openFileInput()方法获得标准的JAVA文件输入流(FileInputStream),通过Context.openFileOutput()方法获得标准的JAVA文件输出流(FileOutputStream) 写数据到file文件中 findViewById(R.id.file).setOnClickListener(new But

Android编程实现图片的上传和下载功能示例_Android

本文实例讲述了Android编程实现图片的上传和下载功能.分享给大家供大家参考,具体如下: 在实现一个Android的WEB服务客户端,比如微博,论坛客户端时,经常会使用到图片的上传和下载.在这里介绍如何利用HttpClient实现图片的上传和下载功能. 1 图片上传:上传图片时,首先获得图片的路径,创建文件,并将图片转化为字节流写入到request,并发送该请求. 客户端代码: File file = new File(imageUrl); String httpUrl = httpDomai

Android实现将View保存成Bitmap的方法_Android

本文实例讲述了Android实现将View保存成Bitmap的方法.分享给大家供大家参考,具体如下: 1. public Bitmap convertViewToBitmap(View view){ Bitmap bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); //利用bitmap生成画布 Canvas canvas = new Canvas(bitmap); //

Android编程实现对电池状态的监视功能示例_Android

本文实例讲述了Android编程实现对电池状态的监视功能.分享给大家供大家参考,具体如下: 最近在开发一个与GPS相关的项目,因为其中涉及到了GPS的使用,众所周知,GPS是相当耗电的,因此就想着怎么能知道当前的电量,并且在电量达到一个下限的时候,及时提醒给用户,以根据情况关闭GPS,节省电量,以备电话急用,后来查资料,看API,终于找到了方法,怎么来监视电量,根据电量的变化来获取当前的电量多少,并且根据其它状态综合对手机进行管理,以达到管理最优的状态. 下面是代码: private Broad

Android自动文本框输入识别提示功能代码_Android

自动提示文本框(AutoCompleteTextView)可以加强用户体验,缩短用户的输入时间(百度的搜索框就是这个效果). 相信大家都熟悉自动识别提示吧,在我们的生活中随处可见,今天就让我为大家简单介绍一下它是如何设计的. 所谓自动识别输入即是根据用户输入的已有信息,为用户提示可能的值,方便用户完成输入.在Android设备上这种功能分为:AutoCompleteTextView和MultiAutoCompleteTextView,前者为单个的自动识别,类似与搜索引擎的输入框提示:后者为多个值

Android 基于百度语音的语音交互功能(推荐)_Android

项目里面用到了语音唤醒功能,前面一直在用讯飞的语音识别,本来打算也是直接用讯飞的语音唤醒,但是讯飞的语音唤醒要收费,试用版只有35天有效期.只好改用百度语音,百度语音所有功能免费,功能也比较简单实用,包括语音识别,语音合成和语音唤醒,正好可以组成一套完整的语音交互功能. 效果图: 首先是语音唤醒功能,说出关键词即可叫语音识别,唤醒成功会有语音提示,这里采用了百度语音的合成功能.然后百度语音识别会根据wifi情况自动切换在线或者离线识别,但是离线识别只能识别已经导入的关键词,而且离线第一次识别需要

Android 访问文件权限的四种模式介绍_Android

Linux文件的访问权限 * 在Android中,每一个应用是一个独立的用户 * drwxrwxrwx * 第1位:d表示文件夹,-表示文件 * 第2-4位:rwx,表示这个文件的拥有者(创建这个文件的应用)用户对该文件的权限 * r:读 * w:写 * x:执行 * 第5-7位:rwx,表示跟文件拥有者用户同组的用户对该文件的权限 * 第8-10位:rwx,表示其他用户组的用户对该文件的权限 openFileOutput的四种模式 * MODE_PRIVATE:-rw-rw---- * MOD