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. 5.synchronized锁重入

    package demo1; /** * synchronized锁重入 * Created by liudan on 2017/6/5. */ public class MyThread5_sync ...

  2. poj 2284 That Nice Euler Circuit 解题报告

    That Nice Euler Circuit Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 1975   Accepted ...

  3. 系统对接API调用

    在与公司外部系统对接时,API接口一般采用REST风格,对外暴露HTTP服务.只需要将入参封装好,并发起HTTP请求即可.具体请求流程如下图所示: 数据格式 API调用参数分为系统参数和业务参数,请求 ...

  4. layer和3D仿射变换

    1.视图的显示基于图层,通过控制图层同样能控制显示效果,获取当前的视图的layer,并为其增加圆角边框. //设置layer边框的宽度为2 view.layer.borderWidth=; //如果需 ...

  5. angularJs的一次性数据绑定:双冒号::

    angularJs 中双冒号 ::来实现一次性数据绑定. 原文: https://blog.csdn.net/qianxing111/article/details/79971544 -------- ...

  6. linux /dev 常见特殊设备介绍与应用[loop,null,zero,full,random]

    linux是文件型系统,所有硬件如软件都会在对于的目录下面有相应的文件表示.对于dev这个目录,我们知道它下面的文件,表示的是linux的设备.在windows系统中,设备大家很好理解,象硬盘,磁盘指 ...

  7. (转)NGUI研究院之三种方式监听NGUI的事件方法

    NGUI事件的种类很多,比如点击.双击.拖动.滑动等等,他们处理事件的原理几乎万全一样,本文只用按钮来举例. 1.直接监听事件 把下面脚本直接绑定在按钮上,当按钮点击时就可以监听到,这种方法不太好很不 ...

  8. idea中dependencies中总是有红色波浪线(缺少dependency)的解决办法

    使用IDEA进行maven开发时,将新项目import进工作空间时,Maven Projects栏中的dependencies中总是有红色波浪线,如下图: 但是这些jar在我本地的maven仓库中实际 ...

  9. 【Javascript Demo】防止按钮在短时间内被多次点击

    如果一个按钮可以在短时间内多次点击,那么有可能会被用户恶意点击,为防止这种情况,可以设定一定时间内只能点击一次,其他时间禁止点击按钮. 1.效果如下:     2.代码如下:   <div> ...

  10. Handler具体解释系列(七)——Activity.runOnUiThread()方法具体解释

    MainActivity例如以下: package cc.testui3; import android.os.Bundle; import android.view.View; import and ...