Welcome 微信登录

首页 / 移动开发 / Android / Android应用程序中读写txt文本文件的基本方法讲解

2016412163511854.gif (370×345)
最终效果图,点击save会保存到文件中,点击show会从文件中读取出内容并显示。

2016412163541130.gif (235×373)
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" > <TextViewandroid: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="请您在此处输入文件内容!"/><Buttonandroid: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。这里是我的一个截图。

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