Android系统中提供了一种文件读写的方法,可以将一些数据以文件的形式保存在设备中。比如一些word文档,PDF文档,图片,音频,视频文件等。

使用文件读写方法的步骤:

1.调用Context.openFileInput()方法获得Java文件输入流(FileInputStream)

2.调用Context.openFileOutput()方法获得java文件输出流(FileOutputStream)

3.使用Resources.openRawResource(R.raw.DataFile)方法返回InputStream

下面的具体实例,在一个Activity里面创建两个EditText和两个Button,第一个EditText和Button将EditText的内容写到文件file.txt文件中。第二个EditText和Button将内容从文件file.txt中读取出来显示。文件被默认保存在/data/data/package/files下面。

MainActivity.java

  1. package com.android.file;
  2. import java.io.FileInputStream;
  3. import java.io.FileOutputStream;
  4. import android.app.Activity;
  5. import android.os.Bundle;
  6. import android.view.View;
  7. import android.view.View.OnClickListener;
  8. import android.widget.Button;
  9. import android.widget.EditText;
  10. public class MainActivity extends Activity {
  11. //声明文件名字符串常量
  12. private static final String FILE_NAME="file.txt";
  13. private Button writeBtn,readBtn;
  14. private EditText writeText,readText;
  15. @Override
  16. public void onCreate(Bundle savedInstanceState) {
  17. super.onCreate(savedInstanceState);
  18. setContentView(R.layout.main);
  19. writeBtn = (Button)findViewById(R.id.Button1);
  20. readBtn = (Button)findViewById(R.id.Button2);
  21. writeText = (EditText)findViewById(R.id.EditText1);
  22. readText = (EditText)findViewById(R.id.EditText2);
  23. writeBtn.setOnClickListener(new OnClickListener() {
  24. @Override
  25. public void onClick(View v) {
  26. //写内容
  27. write(writeText.getText().toString());
  28. }
  29. });
  30. readBtn.setOnClickListener(new OnClickListener() {
  31. @Override
  32. public void onClick(View v) {
  33. //读内容
  34. readText.setText(read());
  35. }
  36. });
  37. }
  38. private String read(){
  39. try {
  40. //实例化文件输入流对象
  41. FileInputStream fis = openFileInput(FILE_NAME);
  42. //定义缓存数组
  43. byte[] buffer = new byte[fis.available()];
  44. //读到缓冲区
  45. fis.read(buffer);
  46. return new String(buffer);
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. }
  50. return null;
  51. }
  52. private void write(String content){
  53. try {
  54. //实例化文件输出流
  55. //openFileOutput(String name, int mode)
  56. //第一个参数文件名
  57. //第二个是模式
  58. //MODE_APPEND表示要创建的文件存在则新写入的数据不会覆盖以前的数据。
  59. FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
  60. //写内容
  61. fos.write(content.getBytes());
  62. //关闭文件流
  63. fos.close();
  64. } catch (Exception e) {
  65. e.printStackTrace();
  66. }
  67. }
  68. }

main.java

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <TextView
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"
  10. android:text="请被文本输入内容"
  11. />
  12. <EditText
  13. android:text=""
  14. android:id="@+id/EditText1"
  15. android:layout_width="fill_parent"
  16. android:layout_height="wrap_content"
  17. android:height="100px"
  18. />
  19. <Button
  20. android:id="@+id/Button1"
  21. android:layout_width="wrap_content"
  22. android:layout_height="wrap_content"
  23. android:text="写数据"
  24. />
  25. <EditText
  26. android:text=""
  27. android:id="@+id/EditText2"
  28. android:layout_width="fill_parent"
  29. android:layout_height="wrap_content"
  30. android:height="100px"
  31. />
  32. <Button
  33. android:id="@+id/Button2"
  34. android:layout_width="wrap_content"
  35. android:layout_height="wrap_content"
  36. android:text="读数据"
  37. />
  38. </LinearLayout>

效果图:

在终端下输入“adb shell”命令进入Android系统查看一下我们的文件是否写入成功。

Android开发学习之数据存取的更多相关文章

  1. android开发学习 ------- json数据与实体类之间的相互转换

    在网络请求的时候,会返回给我们实体类,我们需要将实体类转化为json字符串,方便处理数据: 有时候也会将json数据转换为实体类. 在Android Studio中,json要互相转换,需要用到gso ...

  2. Android 开发笔记 “SharePreference 数据存取”

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...

  3. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  4. Android开发学习路线图

    Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...

  5. Android开发学习之LauncherActivity开发启动的列表

    Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果:   建立主Activity:OtherActivity.java [jav ...

  6. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  7. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  8. Android开发学习路线的七个阶段和步骤

    Android开发学习路线的七个阶段和步骤           Android学习参考路线     第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...

  9. android开发学习笔记000

    使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...

随机推荐

  1. Objective-C:继承的体现

    典型的继承例子:形状Shape为基类,继承它的类有:点类Point.圆类Circle.球体类Sphere.矩形类Rectangle.正方形类Square 点类Point也为基类,继承它的类有:圆类Ci ...

  2. 我所遭遇过的游戏中间件--FlashOcx

    使用Flash做游戏界面的另一种方式是通过Abode提供flash.ocx处理Flash界面.将Flash图像通过GDI绘制出来后,再将图像数据拷贝到一个D3D的纹理结构中,最后由引擎的D3D接口进行 ...

  3. OTL翻译(5) -- otl_stream流相关绑定变量

    声明绑定变量 本章节将详细的说明如何在otl_stream流里面声明绑定变量. SQL语句.SQL语句块或存储过程在程序里面使用的时候总是带有占位符.OTL里面带有一个小的解析器用来解析这些占位符,并 ...

  4. Android之PowerManager&BatteryManager

    PowerManager是Android平台中用于管理控制设备电源状态.重启.休眠状态.唤醒等,使用该API会影响到电池的待机时间,所以无非必要,一般不要使用. 在PowerManager中有几个比较 ...

  5. XTU1236 Fraction

    Fraction Accepted : 124 Submit : 806 Time Limit : 1000 MS Memory Limit : 65536 KB Fraction Problem D ...

  6. Python编程-基础知识-List

    Negative Indexes(负索引) >>> spam = ['cat', 'bat', 'rat', 'elephant'] >>> spam[-1] 'e ...

  7. xhEditor在线编辑器使用实例

    使用xhEditor的最大好处就是不用去处理烦人的HTML标签问题,研究了一天,记录备用 前台HTML: <%@ Page Language="C#" AutoEventWi ...

  8. 1423 Greatest Common Increasing Subsequence (LCIS)

    讲解摘自百度; 最长公共上升子序列(LCIS)的O(n^2)算法? 预备知识:动态规划的基本思想,LCS,LIS.? 问题:字符串a,字符串b,求a和b的LCIS(最长公共上升子序列).? 首先我们可 ...

  9. HDU 4620 Fruit Ninja Extreme 暴搜

    题目大意:题目就是描述的水果忍者. N表示以下共有 N种切水果的方式. M表示有M个水果需要你切. W表示两次连续连击之间最大的间隔时间. 然后下N行描述的是 N种切发 第一个数字C表示这种切法可以切 ...

  10. wepy - 入手

    wepy官方文档: https://tencent.github.io/wepy/document.html#/ ESLint:一般用来校验JavaScript代码是否符合规范,不符合预期就报错(程序 ...