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

582d3e7ee84c4f2903883369c9b8e508.gif

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

846d12fe14f20fcc620bbe4ffe1c7d16.gif

main.xml

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="请您输入要保存的内容:"

/>

android:id="@+id/addText"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:hint="请您在此处输入文件内容!"

/>

android:id="@+id/addButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="save"

/>

android:id="@+id/showButton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="show"

/>

android:id="@+id/showText"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

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。这里是我的一个截图。

db03fcb190b695d837a05e0e5d0e860d.gif

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值