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(); } } }