Android应用程序中读写txt文本文件的基本方法讲解

最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示。

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="请您输入要保存的内容:"
  />
 <EditText
  android:id="@+id/addText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:hint="请您在此处输入文件内容!"
 />
 <Button
  android:id="@+id/addButton"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="save"
 />
 <Button
  android:id="@+id/showButton"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="show"
 />
 <TextView
  android:id="@+id/showText"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  /> 

</LinearLayout>

activity代码

package cn.com.file; 

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; 

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;
import android.widget.TextView;
import android.widget.Toast; 

public class FileTest extends Activity {
  private EditText editText;
  private TextView showTextView;
  // 要保存的文件名
  private String fileName = "chenzheng_java.txt"; 

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // 获取页面中的组件
    editText = (EditText) findViewById(R.id.addText);
    showTextView = (TextView) findViewById(R.id.showText);
    Button addButton = (Button) this.findViewById(R.id.addButton);
    Button showButton = (Button) this.findViewById(R.id.showButton);
    // 绑定单击事件
    addButton.setOnClickListener(listener);
    showButton.setOnClickListener(listener); 

  } 

  // 声明监听器
  private View.OnClickListener listener = new OnClickListener() {
    public void onClick(View v) {
      Button view = (Button) v;
      switch (view.getId()) {
      case R.id.addButton:
        save();
        break;
      case R.id.showButton:
        read();
        break; 

      } 

    } 

  }; 

  /**
   *@author chenzheng_Java
   *保存用户输入的内容到文件
   */
  private void save() { 

    String content = editText.getText().toString();
    try {
      /* 根据用户提供的文件名,以及文件的应用模式,打开一个输出流.文件不存系统会为你创建一个的,
       * 至于为什么这个地方还有FileNotFoundException抛出,我也比较纳闷。在Context中是这样定义的
       *  public abstract FileOutputStream openFileOutput(String name, int mode)
       *  throws FileNotFoundException;
       * openFileOutput(String name, int mode);
       * 第一个参数,代表文件名称,注意这里的文件名称不能包括任何的/或者/这种分隔符,只能是文件名
       *     该文件会被保存在/data/data/应用名称/files/chenzheng_java.txt
       * 第二个参数,代表文件的操作模式
       *     MODE_PRIVATE 私有(只能创建它的应用访问) 重复写入时会文件覆盖
       *     MODE_APPEND 私有  重复写入时会在文件的末尾进行追加,而不是覆盖掉原来的文件
       *     MODE_WORLD_READABLE 公用 可读
       *     MODE_WORLD_WRITEABLE 公用 可读写
       * */
      FileOutputStream outputStream = openFileOutput(fileName,
          Activity.MODE_PRIVATE);
      outputStream.write(content.getBytes());
      outputStream.flush();
      outputStream.close();
      Toast.makeText(FileTest.this, "保存成功", Toast.LENGTH_LONG).show();
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } 

  } 

  /**
   * @author chenzheng_java
   * 读取刚才用户保存的内容
   */
  private void read() {
    try {
      FileInputStream inputStream = this.openFileInput(fileName);
      byte[] bytes = new byte[1024];
      ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
      while (inputStream.read(bytes) != -1) {
        arrayOutputStream.write(bytes, 0, bytes.length);
      }
      inputStream.close();
      arrayOutputStream.close();
      String content = new String(arrayOutputStream.toByteArray());
      showTextView.setText(content); 

    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } 

  } 

}

其他的都为默认。

关于文件保存的路径可以通过ADT携带的File Explorer工具进行查看。如何调出File Explorer工具呢;我们可以通过Windows--showView--others-android下面看到File Explorer。这里是我的一个截图。

对于这个程序,基本上没什么难点,就是纯粹的java流知识。唯一不同的就是context为我们提供了两个方法来获取输入输出流。简单、方便、快捷啊。

(0)

相关推荐

  • 解析Android资源文件及他们的读取方法详解

    Sam在Android开发中,有两种处理资源文件的方式.其一,是将所有资源文件以及JNI程序放置于一个单独的资源包.使用到他们时,使用文件方式读取.或者直接使用C++层代码读取. 其二,则是将资源文件加入到APK内部.使用各种不同的办法去得到其内容.方法一:适合于移植较大的C++程序时使用,因为C++代码数量众多,不太可能修改为JAVA代码.所以将其与资源文件以一定方式存放,并让他们自称体系是个好办法.但这造成软件的发布必须以APK+资源包的方式发布.方法二:则比较适合代码量不是非常大,且资源数

  • 基于android中读取assets目录下a.txt文件并进行解析的深入分析

    android读取assets文件下的内容,一般都是使用getAsset.open()方法,并将文件的路径作为参数传入,而当我们解析一个目录下的文件时需要对其进行解析时,比如:a.txt文件的内容为:nameandroid,liuclass1,2,3,4这些文件有时就像是数据库文件的格式一样,我们就需要对其进行解析.我们知道获取assets文件后返回的是一个inputstream而不是一个file类型,所以我们需要对inputstream进行解析.主要分为两个阶段:第一个阶段为:去换行符,第二个

  • Android开发实现Files文件读取解析功能示例

    本文实例讲述了Android开发实现Files文件读取解析功能.分享给大家供大家参考,具体如下: package com.example.file; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widg

  • android读取assets文件示例

    复制代码 代码如下: // 读取assets文件private void assetsRead(){String fileName = "my_assets.txt";// assets下文件//String fileName = "test/my_assets_test.txt";// assets下子目录文件String ret = "";try {InputStream is = getResources().getAssets().ope

  • Android 解析XML 文件的四种方法总结

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定信息.分析该结构通常需要加载整个文档和构造层次结构,然后才能做任何工作.由于它是基于信息层次的,因而DOM被认为是基于树或基于对象的.DOM以及广义的基于树的处理具有几个优点.首先,由于树在内存中是持久的,因此可以修改它以便应用程序能对数据和结构作出更改.它还可以

  • android读取raw文件示例

    复制代码 代码如下: // 读取raw文件private void rawRead(){String ret = "";try {InputStream is = getResources().openRawResource(R.raw.my_raw);int len = is.available();byte []buffer = new byte[len];is.read(buffer);ret = EncodingUtils.getString(buffer, "utf

  • android读取sdcard路径下的文件的方法

    复制代码 代码如下: // 读取sdcard文件private void sdcardRead(){String fileName = "/sdcard/my_sdcard.txt";// assets下文件//String fileName = "/sdcard/test/my_sdcard_test.txt";// sdcard下子目录文件String ret = "";try {FileInputStream fis = new FileI

  • Android应用读取Excel文件的方法

    本文实例讲述了Android应用读取Excel文件的方法.分享给大家供大家参考,具体如下: ReadExcel.java文件: public class ReadExcel extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

  • android按行读取文件内容的几个方法

    一.简单版 复制代码 代码如下: import java.io.FileInputStream; void readFileOnLine(){ String strFileName = "Filename.txt"; FileInputStream fis = openFileInput(strFileName); StringBuffer sBuffer = new StringBuffer(); DataInputStream dataIO = new DataInputStrea

  • android编程之xml文件读取和写入方法

    本文实例讲述了android编程之xml文件读取和写入方法.分享给大家供大家参考.具体分析如下: 一.环境: 主机:WIN8 开发环境:Eclipse 二.说明: 1.打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置 2.读取xml文件 三.xml文件格式: <?xml version="1.0" encoding="UTF-8" standalone="true"?> -<config> <titl

随机推荐