转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/49448977
本文出自【吴孝城的CSDN博客】

先说下Android中文件相关的操作:

openFileOutput(filename, mode) 打开文件输出流,就是往文件中写入数据,第二参数是模式,就是操作权限

openFileIntut(filename) 打开文件输入流,将文件中的信息读取到程序中

getDir(name, mode) 在app的data目录下获取或创建name对应的子目录

getFileDir() 获得app的data目录的file目录的绝对路径

String[] fileList() 返回app的data目录下的全部文件

deleteFile(filename) 删除app的data目录下指定的文件


文件的操作权限

Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件

Context.MODE_PRIVATE:可写为0,私有方法,只有创建这个文件的程序才能访问,写入的数据会覆盖原文件的内容

Context.MODE_WORLD_READABLE:可写为2当前文件可被其他文件读取

Context.MODE_WORLD_WRITEABLE:可写为1,当前文件可被其他文件读取和写稿


在Android Studio中查看写入的文件的方法,打开

Tool >> Android >> Android Device >> Monitor


第一次打开会有一个发送什么到谷歌的,直接回车就行,

Android本地数据存储之.txt文件存储读写_第1张图片

打开后在DDMS >> File Explore >> data >> data >> (包名) >> files

默认是没有flses这个文件夹的

如果没有开模拟器的话,打开后看到的内容是空白的
可以点击右边指出的推送将选中的xml文件推到电脑上打开查看,也可点击拉入一个文件,可删除选中的文件,旁边的“+”只有在选中文件夹时才有效

下面是一个小例子

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity">    <EditText        android:id="@+id/edit_name"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:hint="请输入文件名"        android:ems="10"        android:layout_centerHorizontal="true"/>    <EditText        android:id="@+id/edit_text"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:hint="请输入文件内容"        android:ems="10"        android:layout_marginTop="10dp"        android:layout_below="@+id/edit_name"        android:layout_centerHorizontal="true"/>    <Button        android:id="@+id/write"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/edit_text"        android:layout_alignLeft="@+id/edit_text"        android:text="写入"/>    <Button        android:id="@+id/reset"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@+id/edit_text"        android:layout_alignRight="@+id/edit_text"        android:text="重置"/>    <Button        android:id="@+id/read"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_below="@id/write"        android:layout_centerHorizontal="true"        android:layout_marginTop="10dp"        android:text="读取文件内容"/></RelativeLayout>

MainActivity.java

package cn.wuxiaocheng.filehelper;import android.content.Context;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;import java.io.IOException;public class MainActivity extends AppCompatActivity implements OnClickListener {    private EditText editname;    private EditText editdetail;    private Button btnsave;    private Button btnreset;    private Button btnread;    private Context mContext;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //得到程序当前的Context,即MainActivity.this        mContext = getApplicationContext();        bindViews();    }    private void bindViews() {        editname = (EditText) findViewById(R.id.edit_name);        editdetail = (EditText) findViewById(R.id.edit_text);        btnreset = (Button) findViewById(R.id.write);        btnsave = (Button) findViewById(R.id.reset);        btnread = (Button) findViewById(R.id.read);        btnreset.setOnClickListener(this);        btnsave.setOnClickListener(this);        btnread.setOnClickListener(this);    }    @Override    public void onClick(View v) {        switch (v.getId()) {            case R.id.reset:                //点击重置按钮,将两个输入框清空                editdetail.setText("");                editname.setText("");                break;            case R.id.write:                //创建文件助手对象,传入mContext程序当前的内容                FileHelper fHelper = new FileHelper(mContext);                //获得文件名和写入内容                String filename = editname.getText().toString();                String filetext = editdetail.getText().toString();                try {                    //保存文件名和内容                    fHelper.save(filename, filetext);                    Toast.makeText(getApplicationContext(), "数据写入成功", Toast.LENGTH_SHORT).show();                } catch (Exception e) {                    //写入异常时                    e.printStackTrace();                    Toast.makeText(getApplicationContext(), "数据写入失败", Toast.LENGTH_SHORT).show();                }                break;            case R.id.read:                //定论一个detail,默认为空用来存放要输出的内容                String detail = "";                FileHelper fHelper2 = new FileHelper(getApplicationContext());                try {                    //得到输入框中文件名获得文件内容,因为可以写入多个不同名文件,所以要根据文件名来获得文件内容                    String fname = editname.getText().toString();                    //调用read()方法,传入上面获得的文件保,将返回的内容赋值给detail                    detail = fHelper2.read(fname);                } catch (IOException e) {                    e.printStackTrace();                }                Toast.makeText(getApplicationContext(), detail, Toast.LENGTH_SHORT).show();                break;        }    }}
FileHelper.java

package cn.wuxiaocheng.filehelper;import android.content.Context;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;/** * Created by Administrator on 2015/10/27. */public class FileHelper {    private Context mContext;    //空参数构造函数,传入的值为空时,不出错    public FileHelper() {    }    public FileHelper(Context mContext) {        super();        this.mContext = mContext;    }    /*    * 定义文件保存的方法,写入到文件中,所以是输出流    * */    public void save(String name, String content) throws Exception {        //Context.MODE_PRIVATE权限,只有自身程序才能访问,而且写入的内容会覆盖文本内原有内容        FileOutputStream output = mContext.openFileOutput(name, Context.MODE_PRIVATE);        output.write(content.getBytes());  //将String字符串以字节流的形式写入到输出流中        output.close();         //关闭输出流    }    /*    * 定义文件读取的方法    * */    public String read(String filename) throws IOException {        //打开文件输入流        FileInputStream input = mContext.openFileInput(filename);        //定义1M的缓冲区        byte[] temp = new byte[1024];        //定义字符串变量        StringBuilder sb = new StringBuilder("");        int len = 0;        //读取文件内容,当文件内容长度大于0时,        while ((len = input.read(temp)) > 0) {            //把字条串连接到尾部            sb.append(new String(temp, 0, len));        }        //关闭输入流        input.close();        //返回字符串        return sb.toString();    }}

界面如下,就不贴GIF了,可以将写入的文件发到桌面,打开查看
Android本地数据存储之.txt文件存储读写_第2张图片




源码下载




更多相关文章

  1. Android Json 使用jsonschema2pojo生成.java文件文件
  2. android camera以时间来命名照片文件
  3. android编辑布局文件时非要降低api level或者更改主题才能显示布
  4. Android学习笔记-Android非布局activity中布局文件及控件加载方
  5. 给Android增加分享库.so文件
  6. Android的log保存到文件上查看
  7. Android应用程序中Manifest.java文件的介绍
  8. Android多文件断点续传(三)——实现文件断点续传

随机推荐

  1. android 下编译c++项目
  2. android 震动的api介绍
  3. Android XML布局报错:android/view/View$O
  4. android shape的使用
  5. android 使用eclipse编译 FBReaderJ流程
  6. android 入门学习笔记 检查网络连接是否
  7. Android错误之控件FloatingActionButton
  8. android:clipChildren 子元素超出父元素
  9. android布局layout中的一些属性
  10. Android中的人脸检测的示例代码(静态和动