Android开发学习之数据存取
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
- package com.android.file;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class MainActivity extends Activity {
- //声明文件名字符串常量
- private static final String FILE_NAME="file.txt";
- private Button writeBtn,readBtn;
- private EditText writeText,readText;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- writeBtn = (Button)findViewById(R.id.Button1);
- readBtn = (Button)findViewById(R.id.Button2);
- writeText = (EditText)findViewById(R.id.EditText1);
- readText = (EditText)findViewById(R.id.EditText2);
- writeBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- //写内容
- write(writeText.getText().toString());
- }
- });
- readBtn.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View v) {
- //读内容
- readText.setText(read());
- }
- });
- }
- private String read(){
- try {
- //实例化文件输入流对象
- FileInputStream fis = openFileInput(FILE_NAME);
- //定义缓存数组
- byte[] buffer = new byte[fis.available()];
- //读到缓冲区
- fis.read(buffer);
- return new String(buffer);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return null;
- }
- private void write(String content){
- try {
- //实例化文件输出流
- //openFileOutput(String name, int mode)
- //第一个参数文件名
- //第二个是模式
- //MODE_APPEND表示要创建的文件存在则新写入的数据不会覆盖以前的数据。
- FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
- //写内容
- fos.write(content.getBytes());
- //关闭文件流
- fos.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
main.java
- <?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="请被文本输入内容"
- />
- <EditText
- android:text=""
- android:id="@+id/EditText1"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:height="100px"
- />
- <Button
- android:id="@+id/Button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="写数据"
- />
- <EditText
- android:text=""
- android:id="@+id/EditText2"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:height="100px"
- />
- <Button
- android:id="@+id/Button2"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="读数据"
- />
- </LinearLayout>
效果图:

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

Android开发学习之数据存取的更多相关文章
- android开发学习 ------- json数据与实体类之间的相互转换
在网络请求的时候,会返回给我们实体类,我们需要将实体类转化为json字符串,方便处理数据: 有时候也会将json数据转换为实体类. 在Android Studio中,json要互相转换,需要用到gso ...
- Android 开发笔记 “SharePreference 数据存取”
除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息.其存储位置在/data ...
- Android开发学习之路-RecyclerView滑动删除和拖动排序
Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...
- Android开发学习路线图
Android开发学习方法: Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大.因此,一个好的学习方法对我们学习Android开发很重要. 在此建议, ...
- Android开发学习之LauncherActivity开发启动的列表
Android开发学习之LauncherActivity开发启动的列表 创建项目:OtherActivity 项目运行结果: 建立主Activity:OtherActivity.java [jav ...
- Android开发学习之路--网络编程之xml、json
一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...
- Android开发学习之路--Android系统架构初探
环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...
- Android开发学习路线的七个阶段和步骤
Android开发学习路线的七个阶段和步骤 Android学习参考路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环. 2.String和St ...
- android开发学习笔记000
使用书籍:<疯狂android讲义>——李刚著,2011年7月出版 虽然现在已2014,可我挑来跳去,还是以这本书开始我的android之旅吧. “疯狂源自梦想,技术成就辉煌.” 让我这个 ...
随机推荐
- iOS:UITableViewCell自定义单元格
UITableViewCell:自定义的单元格,可以在xib中创建单元格,也可以在storyBorad中创建单元格.有四种创建方式 <1>在storyBorad中创建的单元格,它是静态的单 ...
- 原创BULLET物理的DEMO
原创BULLET物理的DEMO 按空格和0,1,2,3,4,5,6会发射不同的刚体. 具体的使用说明: 鼠标右键按下并拖动 旋转视角WSAD ...
- 使用Topshelf 5步创建Windows 服务
使用Topshelf创建Windows 服务简要的介绍了创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with T ...
- EMC ViPR all in one page
EMC ViPR 2.0 Product Documentation Index https://community.emc.com/docs/DOC-35557
- 【SpringBoot】SpringBoot性能优化
Spring 框架给企业软件开发者提供了常见问题的通用解决方案,包括那些在未来开发中没有意识到的问题.但是,它构建的 J2EE 项目变得越来越臃肿,逐渐被 Spring Boot 所替代.Spring ...
- CSS半透明兼容写法
filter: Alpha(opacity=10); -moz-opacity:0.1; opacity:0.1; 例如: background:#A5CD40; filter: Alpha(opac ...
- 【Nodejs】使用nimble串行化回调任务
nodejs的nimble模块可以使我们对回调任务进行串行化,它需要先安装 #npm install nimble 用法也方便,示例代码如下: //========================== ...
- 在Lotus Notes设置邮件转发
Notes里面设置邮件转发,一种是创建一个Agent代理,但这种方式有弊端,就是邮件标题缺失,这个比较别扭.这里就不推荐了. 另一种方法是创建Rule规则,这种方式完美.具体方法如下: 1.点Tool ...
- (LeetCode 141/142)Linked List Cycle
1.Given a linked list, determine if it has a cycle in it. 2.Given a linked list, return the node whe ...
- 整数划分问题--DFS
单点时限:1000ms 内存限制:256MB 描写叙述 Given two positive integers N and M, please divide N into several intege ...